デジタルこどもBASEのロゴ 特定非営利活動法人デジタルこどもBASE 📚 目次
第89回 Lv4 ⏱ 10〜15分

ダメージ計算をしよう

🎯 きょうのミッション

主人公が敵に攻撃します。敵のHPから攻撃力を引くだけ。enemy_hp = enemy_hp - player_atk でダメージが入ります。

🧠 できるようになること

  • ダメージを引き算で表現できる
  • 戦闘の基本ロジックが書ける
  • HPが減る様子を表示できる

🧰 用意するもの

🖼 できあがり

「攻撃した!」のメッセージとともに、敵のHPが減って表示されます。1回攻撃の結果。

📺 実行結果
🔵 スライムが現れた!

⚔ あなたの攻撃!
スライムに 20 のダメージ!
スライムのHP: 30 → 10

🚀 やりかた

  1. プレイヤーと敵の変数を用意。
  2. damage = player_atk で計算。
  3. enemy_hp = enemy_hp - damage(または enemy_hp -= damage)。
  4. ダメージとHP変化を表示。

🐍 きょうのコード

Python main.py
player_atk = 20

enemy_name = "スライム"
enemy_hp = 30

print(f"🔵 {enemy_name}が現れた!")
print()
print("⚔ あなたの攻撃!")

damage = player_atk
old_hp = enemy_hp
enemy_hp -= damage

print(f"{enemy_name}に {damage} のダメージ!")
print(f"{enemy_name}のHP: {old_hp} → {enemy_hp}")
▶ Trinketを開いて動かす

上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。

💡 きょうのポイント

戦闘の本質は引き算HP -= ダメージ。これを何度もくりかえせばHP0になり、敵が倒れる。次回はくりかえし(ターン制)にして本格戦闘に進化。

🎮 チャレンジ

  • 防御力を考慮しよう(damage = player_atk - enemy_def
  • ダメージが0以下にならないよう max(0, damage)
  • プレイヤーが2回攻撃するパターンを書こう

🔁 ふりかえり

  • -= は何の短縮形?
  • 実際のRPGのダメージ計算はもっと複雑。どんな要素があると思う?
  • 次回はターン制。何が変わる?

👨‍👩‍👧 おうちの人・先生へ

  • 準備:なし。
  • つまずきポイントenemy_hp -= damage-=+= と対の関係。
  • 声かけ例:「これでもう戦闘できる」のワクワク感を共有。