ボス戦を作ろう
RPGの華ボス戦。HP200、攻撃力25のドラゴンと戦います。専用のセリフ・演出で緊張感を出します。
🧠 できるようになること
- ボスは普通の敵より強いことを表現できる
- セリフ・演出で雰囲気を作れる
- RPGの「ここぞ」の場面を作れる
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- このページの「▶ このページで実行」ボタン(コードをそのまま動かせます)
- Trinket(予備の実行サイト:https://trinket.io/python)
🖼 できあがり
「ドラゴンが現れた!」のドラマチックな登場。HP200の強敵を倒すまでの戦い。
📺 実行結果
🐉🐉🐉 ドラゴンが現れた!🐉🐉🐉 「我こそはドラゴン王!貴様などひとひねりだ!」 ⚔ ターン1 (戦闘ログ続く) 🎉 ドラゴンを倒した! 「な…なぜ、人間ふぜいに……」
🚀 やりかた
- ドラゴン用の変数(HP200, ATK25)を作る。
- 登場演出を
printで派手に。 - 戦闘ループは普通の敵と同じ。
- 勝利時に専用セリフ+"WIN!"演出。
🐍 きょうのコード
Python
main.py
import random
import time
player_hp = 100
player_atk = 20
items = ["ポーション", "ポーション", "ポーション"]
boss_name = "ドラゴン"
boss_hp = 200
boss_atk = 25
print("🐉🐉🐉 " + boss_name + "が現れた!🐉🐉🐉")
time.sleep(1)
print("「我こそはドラゴン王!貴様などひとひねりだ!」")
time.sleep(1)
print()
turn = 1
while player_hp > 0 and boss_hp > 0:
print(f"⚔ ターン{turn}")
print("1: 攻撃 / 2: ポーション")
action = input("> ")
if action == "1":
damage = player_atk
if random.random() < 0.1:
damage *= 2
print("💥 クリティカル!")
boss_hp -= damage
print(f"あなたの攻撃!{boss_name}に{damage}ダメージ")
elif action == "2" and "ポーション" in items:
player_hp = min(player_hp + 30, 100)
items.remove("ポーション")
print(f"💚 ポーションを使った!HP {player_hp}")
print(f"ボスHP: {boss_hp}")
if boss_hp <= 0:
break
player_hp -= boss_atk
print(f"{boss_name}の攻撃!{boss_atk}ダメージ")
print(f"あなたのHP: {player_hp}")
print()
turn += 1
if boss_hp <= 0:
print(f"🎉 {boss_name}を倒した!")
print("「な…なぜ、人間ふぜいに……」")
else:
print("💀 あなたは倒れた…")
このページの「▶ このページで実行」でそのまま動きます。Trinketを使うときは、上のコードをコピーして左のエリアに貼り付け、Runボタン(▶)を押します。
💡 きょうのポイント
ボスは強さで個性を出します。HPと攻撃力を上げる、特殊な演出を入れる、専用セリフ。「物語性」がRPGをドラマにします。
🎮 チャレンジ
- ボスのHPが半分以下になったら「怒りモード」(攻撃力アップ)
- ボス戦専用BGM代わりに
print("🎵 ")で雰囲気作り - 倒したあとに「報酬:金100」を加算
🔁 ふりかえり
- ボス戦と通常戦闘、何が違う?
- ゲームのドラマ性をプログラムでどう表現する?
- 次回はステージ進行
👨👩👧 おうちの人・先生へ
- 準備:コードが長いので、まずサンプルをそのまま動かして勝敗まで確認します。次にHPやダメージだけを変えます。
- つまずきポイント:コードが長くなるため、どこで止まったかを行番号で確認します。
time.sleep(1)を使うには、先頭のimport timeが必要です。 - 声かけ例:「強すぎるボスは面白くないこともある」と伝え、勝てるかどうかを数字で調整するゲームデザインにつなげます。