Menu
CoddyTech

Tương tác cuối cùng

Thuộc phần Lập trình hướng đối tượng trong hành trình Rust của Coddy. Bài học 23 trên 61.

challenge icon

Thử thách

Dễ

Chúc mừng bạn đã tạo được thú cưng ảo! Ở bước cuối này, bạn kết hợp mọi thứ bằng cách mô phỏng một phiên tương tác hoàn chỉnh với thú cưng, để tất cả phương thức bạn viết hoạt động cùng nhau.

Module pet.rs đã được cung cấp đầy đủ cho bạn: new, các hàm getter, set_energy, set_hunger, feed, play và status. Bạn chỉ cần viết main.rs.

Bạn sẽ nhận ba đầu vào, giống như ba đầu vào ở các bước trước:

  1. Tên thú cưng
  2. Mức năng lượng ban đầu của thú cưng
  3. Mức độ đói ban đầu của thú cưng

Trong main.rs, hãy thực hiện trình tự sau:

  1. Tạo thú cưng với tên đã cho, sau đó đặt mức năng lượng và độ đói của nó theo đầu vào
  2. Hiển thị báo cáo trạng thái
  3. Chơi với thú cưng hai lần
  4. Cho thú cưng ăn một lần
  5. In dòng phân cách --- After Activities ---
  6. Hiển thị lại báo cáo trạng thái

Hãy nhớ cách các chỉ số thay đổi: chơi tiêu tốn 20 năng lượng và tăng 15 độ đói, cho ăn làm giảm độ đói đi 30, năng lượng không bao giờ xuống dưới 0 và độ đói không bao giờ vượt quá 100. Tâm trạng là happy khi năng lượng từ 50 trở lên và độ đói không quá 50, nếu không thì là tired, vì vậy thú cưng có thể bắt đầu vui vẻ nhưng kết thúc phiên tương tác trong trạng thái mệt mỏi.

Ví dụ, với các đầu vào Luna, 50 và 50:

--- Status Report ---
Name: Luna
Energy: 50
Hunger: 50
Mood: happy
Luna had fun playing!
Luna had fun playing!
Luna enjoyed the meal!
--- After Activities ---
--- Status Report ---
Name: Luna
Energy: 10
Hunger: 50
Mood: tired

Thử thách cuối cùng này cho thấy toàn bộ hệ thống thú cưng ảo mà bạn đã xây dựng: một module với các trường riêng tư, hàm getter, hàm setter và các phương thức phối hợp với nhau trong một phiên tương tác duy nhất.

Tự làm thử

mod pet;

use pet::Pet;

fn main() {
    let mut name = String::new();
    std::io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();

    let mut energy_input = String::new();
    std::io::stdin().read_line(&mut energy_input).expect("Failed to read line");
    let initial_energy: u32 = energy_input.trim().parse().expect("Failed to parse energy");

    let mut hunger_input = String::new();
    std::io::stdin().read_line(&mut hunger_input).expect("Failed to read line");
    let initial_hunger: u32 = hunger_input.trim().parse().expect("Failed to parse hunger");

    // TODO: tạo thú cưng và đặt mức năng lượng, mức đói của nó theo đầu vào

    // TODO: in ra báo cáo trạng thái đầu tiên

    // TODO: chơi hai lần, rồi cho ăn một lần

    // TODO: in ra dấu phân cách "--- After Activities ---"

    // TODO: in ra báo cáo trạng thái cuối cùng
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Rust online