攻撃と防御を選べるようにしよう
毎ターン、プレイヤーは行動を選べる。「攻撃」「防御」「逃げる」から選ぶ。inputでメニューから選択する戦闘システムに進化。
🧠 できるようになること
- input で行動選択ができる
- 選択に応じて違う処理を実行できる
- コマンド選択RPGの基本ができる
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- Trinket(https://trinket.io/python)
🖼 できあがり
毎ターン「1: 攻撃 / 2: 防御 / 3: 逃げる」のメニューが出て、選んだ行動が実行されます。
📺 実行結果
⚔ ターン1
1: 攻撃 / 2: 防御 / 3: 逃げる
> 1
あなたの攻撃!スライムに20ダメージ
敵のHP: 10
スライムの攻撃!あなたに8ダメージ
あなたのHP: 92
🚀 やりかた
- ターン内でメニュー表示+
inputで行動選択。 if action == "1":で攻撃。elif action == "2":で防御(次の敵の攻撃を半減)。elif action == "3":で逃走(ループ脱出)。
🐍 きょうのコード
Python
main.py
player_hp = 100
player_atk = 20
enemy_hp = 30
enemy_atk = 8
enemy_name = "スライム"
turn = 1
while player_hp > 0 and enemy_hp > 0:
print(f"⚔ ターン{turn}")
print("1: 攻撃 / 2: 防御 / 3: 逃げる")
action = input("> ")
defending = False
if action == "1":
enemy_hp -= player_atk
print(f"あなたの攻撃!{enemy_name}に{player_atk}ダメージ")
elif action == "2":
defending = True
print("あなたは防御の構え!")
elif action == "3":
print("あなたは逃げ出した!")
break
print(f"敵のHP: {enemy_hp}")
if enemy_hp <= 0:
break
damage = enemy_atk
if defending:
damage = damage // 2
player_hp -= damage
print(f"{enemy_name}の攻撃!あなたに{damage}ダメージ")
print(f"あなたのHP: {player_hp}")
turn += 1
if enemy_hp <= 0:
print(f"🎉 {enemy_name}を倒した!")
elif player_hp <= 0:
print(f"💀 あなたは倒れた…")
上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。
💡 きょうのポイント
プレイヤーが行動を選べると、ゲームに「戦略」が生まれます。HPが少ないときは防御、敵が弱ったら攻撃、ピンチなら逃げる。これがRPGの面白さの核心。
🎮 チャレンジ
- 「強攻撃」(ダメージ2倍だが命中50%)を追加
- 防御中は被ダメ0にしよう
- 逃げるときの成功率を50%に
🔁 ふりかえり
- 選択肢があるとゲームはどう変わる?
- 選択肢が多すぎると逆につまらない?
- 次回はクリティカル(運要素)が追加
👨👩👧 おうちの人・先生へ
- 準備:なし。
- つまずきポイント:
defending変数の状態管理。次のターンにはFalseに戻る。 - 声かけ例:「自分で考えて選ぶ」のがゲームの楽しさ、と。