最终互动
本课属于 Coddy Rust 学习旅程的“面向对象编程”单元。第 23 课,共 61 课。
挑战
简单恭喜你完成了虚拟宠物!在最后一步中,你将通过模拟与宠物的一次完整互动,把所有内容结合起来,让你编写的每个方法都能协同工作。
pet.rs 模块已经完整提供给你,其中包括 new、getter、set_energy、set_hunger、feed、play 和 status。你只需要编写 main.rs。
你会收到 3 个输入,和前面几步中的 3 个输入相同:
- 宠物的名字
- 宠物的初始能量
- 宠物的初始饥饿值
在 main.rs 中,按以下顺序执行:
- 用给定的名字创建宠物,然后根据输入设置它的能量和饥饿值
- 显示状态报告
- 和宠物玩两次
- 给宠物喂一次食
- 打印分隔行
--- After Activities --- - 再次显示状态报告
记住各项数值的变化:玩耍会消耗 20 点能量,并增加 15 点饥饿值;喂食会减少 30 点饥饿值;能量不会低于 0,饥饿值不会高于 100。当能量大于或等于 50 且饥饿值小于或等于 50 时,心情为 happy,否则为 tired,因此宠物可能开始时心情愉快,结束时却感到疲惫。
例如,输入 Luna、50 和 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这个最后的挑战展示了你构建的完整虚拟宠物系统:一个包含私有字段、getter、setter 和方法的模块,它们协同工作,完成一次互动过程。
亲手试试
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:创建宠物,并根据输入设置它的精力值和饥饿值
// TODO:打印第一次状态报告
// TODO:玩两次,然后喂食一次
// TODO:打印分隔符 "--- After Activities ---"
// TODO:打印最终状态报告
}
面向对象编程中的所有课
自己练习: Rust 在线编译器