オブジェクト指向プログラミング演習課題 🚀

この演習では、学んだオブジェクト指向の考え方を使って、3つの簡単なCUIゲームを順番に作成していきます。 それぞれのゲームを作ることで、クラス、インスタンス、属性、メソッドといった基本的な概念から、少しずつステップアップしていきましょう!


演習1:じゃんけんゲーム ✊✌️✋

目的:

作るもの: プレイヤーが手(グー、チョキ、パー)を選び、コンピュータもランダムに手を出して勝敗を判定するCUIゲームです。

実行イメージ:

じゃんけんゲームを開始します!
あなたの手を選んでください (1:グー, 2:チョキ, 3:パー): > 1

あなた: グー
コンピュータ: パー

残念、あなたの負けです!

もう一度プレイしますか? (y/n): > n
ゲームを終了します。

実装ステップのヒント:

  1. Player クラスを考えてみよう!
  2. ComputerPlayer クラスを考えてみよう! (Playerクラスを継承すると楽かも?)
  3. Game クラスを考えてみよう!
  4. 勝敗判定のロジックを考えよう。
  5. ゲーム全体の流れ(if __name__ == "__main__": の中身のイメージ):
    # game = Game()  # Gameオブジェクトを作成
    # game.start()   # ゲームを開始
    

演習2:サイコロゲーム 🎲

目的:

作るもの: プレイヤーとコンピュータがそれぞれサイコロを振り、出た目の大きさで勝敗を決めるシンプルなゲームです。

実行イメージ:

サイコロゲーム!

--- ラウンド 1 ---
あなた がサイコロを振ります... 出た目は 4 です。
コンピュータ がサイコロを振ります... 出た目は 2 です。
あなたの勝ちです!

現在のスコア: あなた 1 - 0 コンピュータ

続けますか? (y/n): y

実装ステップのヒント:

  1. Die (サイコロ) クラスを作ろう!
  2. Player クラスを考えよう!
  3. Game クラスを考えよう!
  4. ゲーム全体の流れ(if __name__ == "__main__": の中身のイメージ):
    # game = Game()  # Gameオブジェクトを作成
    # game.start()   # ゲームを開始
    

演習3:テキストベースRPG風バトル ⚔️

目的:

作るもの: プレイヤーキャラクターとモンスターが交互に攻撃しあい、どちらかのHPが0になるまで戦うCUIバトルゲームです。

実行イメージ:

--- バトル開始! ---
[勇者 アベル HP: 100/100] vs [スライム HP: 30/30]

勇者 アベルのターン:
1: こうげき
コマンド? > 1

勇者 アベルのこうげき!
スライムに 15 のダメージ!
[スライム HP: 15/30]

スライムのターン:
スライムのこうげき!
勇者 アベルに 8 のダメージ!
[勇者 アベル HP: 92/100]

... (戦闘継続) ...

スライムをたおした!

実装ステップのヒント:

  1. Character (キャラクター) という親クラスを作ろう!
  2. Hero (勇者) クラスを作ろう! (Character クラスを継承)
  3. Monster (モンスター) クラスを作ろう! (Character クラスを継承)
  4. バトルを進行するメインの処理(関数または Game クラスのメソッドとして)を書こう!
  5. ゲーム全体の流れ(if __name__ == "__main__": の中身のイメージ):
    # hero = Hero("勇者", 100, 15, 50, 20)
    # monster = Monster("スライム", 30, 8, "体当たり")
    
    # # バトルループを実行する関数を呼び出す (例)
    # def battle(player_char, enemy_char):
    #     # ... (上記4のメイン処理) ...
    #     pass
    # battle(hero, monster)
    

まずは演習1から挑戦してみましょう!行き詰まったら、スライド資料を見返したり、少しずつ動かしながら確認したりするのがおすすめです。頑張ってください!