Menu
CoddyTech

Báo cáo trạng thái

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 22 trên 61.

challenge icon

Thử thách

Dễ

Thú cưng ảo của bạn đang tiến triển rất tốt! Bây giờ, hãy thêm khả năng báo cáo cảm xúc của nó. Ở bước này, bạn sẽ thêm phương thức status để cung cấp thông tin tổng quan đầy đủ về trạng thái hiện tại của thú cưng.

Báo cáo trạng thái cần mô tả tình trạng của thú cưng dựa trên mức năng lượng và cơn đói. Tùy vào việc bạn chăm sóc thú cưng tốt đến đâu, nó có thể có những tâm trạng khác nhau:

  • Nếu năng lượng từ 50 trở lên VÀ mức đói từ 50 trở xuống, thú cưng của bạn sẽ vui vẻ
  • Nếu không, thú cưng của bạn sẽ mệt mỏi

Thêm phương thức status vào Pet, phương thức này nhận &self và in ra báo cáo trạng thái đầy đủ, gồm tên, năng lượng, mức đói và tâm trạng của thú cưng.

Báo cáo trạng thái cần tuân theo định dạng chính xác sau:

--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}

Trong main.rs, hãy đọc tên, mức năng lượng và mức đói của thú cưng, thiết lập thú cưng với các giá trị đó, rồi gọi phương thức status để hiển thị báo cáo.

Ví dụ, nếu đầu vào là:

Buddy
70
30

Đầu ra sẽ là:

--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happy

Và nếu đầu vào là:

Max
40
60

Đầu ra sẽ là:

--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tired

Phương thức này giúp bạn nhanh chóng kiểm tra tình trạng của thú cưng bất cứ lúc nào!

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");

    let mut my_pet = Pet::new(name);
    my_pet.set_energy(initial_energy);
    my_pet.set_hunger(initial_hunger);
    my_pet.play();

    println!("Energy: {}", my_pet.energy());
    println!("Hunger: {}", my_pet.hunger());
}

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