Menu
CoddyTech

最终互动

本课属于 Coddy Rust 学习旅程的“面向对象编程”单元。第 23 课,共 61 课。

challenge icon

挑战

简单

恭喜你完成了虚拟宠物!在最后一步中,你将通过模拟与宠物的一次完整互动,把所有内容结合起来,让你编写的每个方法都能协同工作。

pet.rs 模块已经完整提供给你,其中包括 new、getter、set_energy、set_hunger、feed、play 和 status。你只需要编写 main.rs。

你会收到 3 个输入,和前面几步中的 3 个输入相同:

  1. 宠物的名字
  2. 宠物的初始能量
  3. 宠物的初始饥饿值

在 main.rs 中,按以下顺序执行:

  1. 用给定的名字创建宠物,然后根据输入设置它的能量和饥饿值
  2. 显示状态报告
  3. 和宠物玩两次
  4. 给宠物喂一次食
  5. 打印分隔行 --- After Activities ---
  6. 再次显示状态报告

记住各项数值的变化:玩耍会消耗 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 在线编译器