Menu
Coddy logo textTech

最後のインタラクション

CoddyのRustジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 23/61。

challenge icon

チャレンジ

簡単

Virtual Pet の構築、おめでとうございます!この最後のステップでは、pet との完全なインタラクションセッションをシミュレートして、作成したすべてのメソッドを同時に動作させます。

pet.rs モジュールは、new、getter、set_energyset_hungerfeedplaystatus がすべて実装された状態で与えられます。あなたが書くのは main.rs だけです。

次の3つの入力を受け取ります。これまでのステップと同じ3つです。

  1. pet の名前
  2. pet が開始時に持つ energy
  3. pet が開始時に持つ hunger

main.rs で、次の手順を実行します。

  1. 指定された名前で pet を作成し、入力から energy と hunger を設定する
  2. status report を表示する
  3. pet と2回 play する
  4. pet に1回 feed する
  5. 区切り線 --- After Activities --- を出力する
  6. もう一度 status report を表示する

stats がどのように変化するかを思い出してください。play すると 20 energy を消費して 15 hunger を追加し、feed すると hunger が 30 減少します。energy が 0 未満になることはなく、hunger が 100 を超えることもありません。energy が 50 以上で、かつ hunger が 50 以下の場合、mood は happy になります。それ以外の場合は tired です。そのため、pet は happy で始まり、セッションの最後に tired になることがあります。

たとえば、入力が Luna5050 の場合は次のようになります。

--- 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

この最後の challenge では、構築してきた Virtual Pet システムの全体を確認します。private フィールド、getter、setter、そして1つのインタラクティブなセッションとして連携するメソッドを備えたモジュールです。

自分で試してみよう

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: ペットを作成し、入力から energy と hunger を設定する

    // TODO: print the first status report

    // TODO: play を2回行い、その後 feed を1回行う

    // TODO: print the separator "--- After Activities ---"

    // TODO: print the final status report
}

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ