Chơi với thú 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 21 trên 61.
Thử thách
DễThú cưng của bạn đã được cho ăn và đang vui vẻ: giờ hãy cho nó vận động! Ở bước này, bạn sẽ thêm phương thức play để tương tác với người bạn đồng hành ảo của mình.
Chơi với thú cưng sẽ tiêu hao năng lượng nhưng cũng khiến nó đói hơn. Khi thú cưng chơi, energy giảm đi 20 và hunger tăng thêm 15. Tuy nhiên, năng lượng không bao giờ được thấp hơn 0, và cơn đói không bao giờ được vượt quá 100.
Bạn cũng cần một phương thức getter energy để kiểm tra thú cưng mệt đến mức nào sau khi chơi.
Trong main.rs, hãy đọc tên thú cưng cùng với giá trị năng lượng và cơn đói ban đầu. Sau khi thiết lập thú cưng, hãy gọi play một lần và hiển thị cả mức năng lượng lẫn cơn đói.
Phương thức play sẽ in ra thông báo cho biết thú cưng của bạn đã vui vẻ:
{name} had fun playing!Sau đó, tệp chính của bạn sẽ hiển thị các chỉ số:
Energy: {energy_level}
Hunger: {hunger_level}Ví dụ, nếu đầu vào là:
Buddy
50
30Đầu ra sẽ là:
Buddy had fun playing!
Energy: 30
Hunger: 45Nếu năng lượng ban đầu là 10, chơi sẽ khiến năng lượng giảm xuống 0 (không âm). Nếu cơn đói ban đầu là 90, chơi sẽ giới hạn cơn đói ở mức 100.
Bạn cần thêm phương thức set_energy bên cạnh set_hunger hiện có để khởi tạo cả hai giá trị khi kiểm thử.
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