魔王

🔥JavaScript for文演習課題:「勇者と10体の魔王軍」🔥

🎮 課題の概要

勇者「アルス」は、魔王を倒すために10体の魔王軍のモンスターを倒しながら城の最上階を目指します。

モンスターにはそれぞれ「HP」があり、勇者の攻撃(atk)で1体ずつダメージを与えて倒していきます。

ただし!

  • 一部の敵は 「防御力(def)」 を持っており、勇者の攻撃力ではダメージを与えられないかもしれません。
  • また、HPが高い敵には複数回の攻撃が必要です。

📝 仕様

勇者のステータス:

javascriptコピーする編集するlet hero = {
  name: "アルス",
  atk: 15
};

魔王軍の配列(10体):

javascriptコピーする編集するlet enemies = [
  { name: "スライム", hp: 10, def: 2 },
  { name: "ゴブリン", hp: 25, def: 5 },
  { name: "オーク", hp: 30, def: 8 },
  { name: "ガーゴイル", hp: 35, def: 10 },
  { name: "ドラゴンの子", hp: 45, def: 12 },
  { name: "シャドウ", hp: 20, def: 6 },
  { name: "ミノタウロス", hp: 50, def: 14 },
  { name: "メデューサ", hp: 40, def: 10 },
  { name: "デスナイト", hp: 60, def: 18 },
  { name: "魔王", hp: 100, def: 20 }
];

💡 やること(for文とロジックの課題)

  1. for文を使って1体ずつ戦う
  2. 勇者の攻撃力と敵の防御力を比較して、
    ダメージ = atk – def(ただし0未満になったら0にする)
  3. 敵のHPを0以下になるまで攻撃(while文も組み合わせOK)
  4. 何回で倒したかも表示する。
  5. 全部倒したら「魔王を倒した!世界に平和が戻った!」と表示。

🔍 出力イメージ(例)

python-replコピーする編集するスライムと戦う!
→ ダメージ 13!残りHP: -3
→ スライムを1回で倒した!

ゴブリンと戦う!
→ ダメージ 10!残りHP: 15
→ ダメージ 10!残りHP: 5
→ ダメージ 10!残りHP: -5
→ ゴブリンを3回で倒した!

...

魔王を倒した!世界に平和が戻った!

👑 発展課題(ロジック強化したい人向け)

  • 勇者に「HP」を追加し、敵の攻撃も毎ターン受けるようにする。
  • 勇者が倒されたらゲームオーバー。
  • レベルアップしてatkが上がる機能を追加してもOK。

🧠 教訓

  • forwhile の違いを体験できる
  • 条件分岐や繰り返し処理の大切さが実感できる
  • オブジェクト・配列の操作が自然に学べる
  • なにより楽しい!

✅ ヒント1. インデックスを使ってアクセスする

javascriptコピーする編集するlet enemies = [
  { name: "スライム", hp: 10, def: 2 },
  { name: "ゴブリン", hp: 25, def: 5 }
];

// for文でインデックス(i)を使ってアクセス
for (let i = 0; i < enemies.length; i++) {
  console.log("敵の名前は:" + enemies[i].name);
  console.log("HP:" + enemies[i].hp);
  console.log("防御力:" + enemies[i].def);
}

👉 enemies[i] で、i番目のモンスター(オブジェクト)を取り出せます。


✅ ヒント2. for...of文で1体ずつ取り出す(シンプル)

javascriptコピーする編集するfor (let enemy of enemies) {
  console.log("敵が現れた!:" + enemy.name);
}

👉 enemy には配列の中の1つ1つのオブジェクトが順番に入ります。