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

ステージを進めるしくみ

🎯 きょうのミッション

1つの戦闘で終わらせず、複数のステージを進めるシステム。スライム→ゴブリン→ドラゴンの順に登場し、全部倒すとクリア。

🧠 できるようになること

  • ステージ変数で進行を管理できる
  • ステージごとに敵を変えられる
  • 全クリア判定が書ける

🧰 用意するもの

🖼 できあがり

3つのステージを順番にクリアしていきます。最後のドラゴンを倒したら「全クリア」。

📺 実行結果
🌍 ステージ1:森
スライムが現れた!
(戦闘)
クリア!
🌍 ステージ2:洞窟
ゴブリンが現れた!
(戦闘)
クリア!
🌍 ステージ3:ボス城
ドラゴンが現れた!
(戦闘)
🏆 全ステージクリア!

🚀 やりかた

  1. 敵リスト stages = [("スライム", 30, 8), ("ゴブリン", 60, 15), ("ドラゴン", 200, 25)]
  2. for stage in stages: で順番に挑戦。
  3. 戦闘関数に渡して戦う。
  4. 全部勝てば「全クリア」。

🐍 きょうのコード

Python main.py
player_hp = 100
player_atk = 20

stages = [
    ("森", "スライム", 30, 8),
    ("洞窟", "ゴブリン", 60, 15),
    ("ボス城", "ドラゴン", 200, 25),
]

for area, enemy_name, enemy_hp, enemy_atk in stages:
    print(f"🌍 ステージ:{area}")
    print(f"{enemy_name}が現れた!")
    while player_hp > 0 and enemy_hp > 0:
        enemy_hp -= player_atk
        if enemy_hp <= 0:
            break
        player_hp -= enemy_atk
    if player_hp <= 0:
        print("💀 あなたは倒れた…")
        break
    print(f"🎉 {enemy_name}を倒した!")
    print()

if player_hp > 0:
    print("🏆 全ステージクリア!")
▶ Trinketを開いて動かす

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

💡 きょうのポイント

敵をタプルのリストにまとめると、ステージ進行が for 1つで書けます。for area, name, hp, atk in stages: のように分解代入で受け取れるのがPythonの便利機能。

🎮 チャレンジ

  • ステージ間にHP回復イベントを入れよう
  • ステージごとにアイテム入手
  • クリア後に次のステージへ進むかボイト確認

🔁 ふりかえり

  • タプルのリストで管理する便利さは?
  • ステージ進行を変数で表現する方法は他にもある?
  • 次回はハイスコア

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

  • 準備:なし。
  • つまずきポイント:タプルとリストの違い。タプルは (...)、変えられない。
  • 声かけ例:「データ構造でゲームを設計」する楽しさを共有。