ペットと遊ぶ
CoddyのRustジャーニー「Object Oriented Programming」セクションの一部 — レッスン 21/61。
チャレンジ
簡単ペットにお腹いっぱい食べさせて幸せにしました。次は運動をさせてあげましょう!このステップでは、バーチャルコンパニオンと触れ合うための play メソッドを追加します。
ペットと遊ぶとエネルギーを消費しますが、同時にお腹も空きます。ペットが遊ぶと、energy は 20 減少し、hunger は 15 増加します。ただし、エネルギーは 0 を下回ってはならず、空腹度は 100 を超えてはいけません。
また、遊びの後にペットがどれくらい疲れているかを確認するために、energy のゲッターメソッドも必要です。
main.rs で、ペットの名前と初期のエネルギー、空腹度の値を読み取ります。ペットの設定が終わったら、play を1回呼び出し、エネルギーと空腹度の両方のレベルを表示してください。
play メソッドは、ペットが楽しんだことを示すメッセージを表示する必要があります:
{name} had fun playing!次に、メインファイルで統計情報を表示します:
Energy: {energy_level}
Hunger: {hunger_level}例えば、入力が以下の場合:
Buddy
50
30出力は以下のようになります:
Buddy had fun playing!
Energy: 30
Hunger: 45もしエネルギーが 10 から始まった場合、遊ぶと 0 になります(負の値にはなりません)。もし空腹度が 90 から始まった場合、遊ぶと 100 で上限に達します。
テストのために両方の値を初期化できるよう、既存の set_hunger に加えて set_energy メソッドを追加する必要があります。
自分で試してみよう
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());
}