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.
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ừ
50trở lên VÀ mức đói từ50trở 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: happyVà nếu đầu vào là:
Max
40
60Đầu ra sẽ là:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredPhươ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
1Phương thức và hành vi
Nhập môn khối triển khaiTham số selfPhương thức có thể thay đổiHàm liên kếtNhiều khối triển khaiNối chuỗi phương thứcÔn tập: thao tác với hình chữ nhật4Dự án: Thú cưng ảo
Định nghĩa thú cưngCho thú cưng ăn7Các trait tiêu chuẩn
Trait DebugTrait DisplayClone và CopyCác trait so sánh bằngÔn tập: Điểm có thể in ra2Tính đóng gói và module
Kiến thức cơ bản về moduleTừ khóa publicTrường riêng tưHàm lấy giá trịHàm thiết lập giá trịÔn tập: tủ khóa an toàn5Kiểu tổng quát
Cấu trúc tổng quátPhương thức tổng quátNhiều kiểu tổng quátHàm tổng quátÔn tập: điểm tọa độTự luyện tập: Trình biên dịch Rust online