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.
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:
- Tên thú cưng
- Mức năng lượng ban đầu của thú cưng
- Mức độ đói ban đầu của thú cưng
Trong main.rs, hãy thực hiện trình tự sau:
- 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
- Hiển thị báo cáo trạng thái
- Chơi với thú cưng hai lần
- Cho thú cưng ăn một lần
- In dòng phân cách
--- After Activities --- - 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: tiredThử 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
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