ステータスレポート
CoddyのRustジャーニー「Object Oriented Programming」セクションの一部 — レッスン 22/61。
チャレンジ
簡単バーチャルペットの開発は順調ですね!次は、ペットが自分の気分を報告できるようにしましょう。このステップでは、ペットの現在の状態を完全に把握できる status メソッドを追加します。
ステータスレポートは、エネルギーと空腹度に基づいてペットの状態を説明する必要があります。ペットの気分は、どれだけ適切に世話をされているかによって変わります:
- エネルギーが
50以上、かつ空腹度が50以下の場合、ペットは happy です。 - それ以外の場合、ペットは tired です。
Pet に &self を受け取る status メソッドを追加し、ペットの名前、エネルギー、空腹度、そして気分を表示する完全なステータスレポートを出力してください。
ステータスレポートは、以下の正確な形式に従う必要があります:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}main.rs で、ペットの名前、エネルギー、空腹度の値を読み取り、それらの値でペットを設定してから、status メソッドを呼び出してレポートを表示してください。
例えば、入力が以下の場合:
Buddy
70
30出力は以下のようになります:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyまた、入力が以下の場合:
Max
40
60出力は以下のようになります:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredこのメソッドを使えば、いつでもペットの健康状態を素早く確認できます!
自分で試してみよう
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());
}