乱数でクリティカルヒットを入れよう
10%の確率でクリティカルヒット(ダメージ2倍)になる仕組み。random.random() で0〜1の乱数を出し、0.1未満なら大成功。
🧠 できるようになること
random.random()で確率判定ができる- クリティカル要素でゲームに「運」を加えられる
- %ベースの確率設計を理解する
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- このページの「▶ このページで実行」ボタン(コードをそのまま動かせます)
- Trinket(予備の実行サイト:https://trinket.io/python)
🖼 できあがり
普通は20ダメージのところ、たまに「💥クリティカル!40ダメージ!」と出ます。Run を何度かしてクリティカルを引き当てよう。
📺 実行結果
⚔ ターン2 💥クリティカル! あなたの攻撃!スライムに40ダメージ 敵のHP: -10 🎉 スライムを倒した!
🚀 やりかた
import random。- 攻撃時に
if random.random() < 0.1:でクリティカル判定。 - クリティカルなら
damage = player_atk * 2。 - そうでなければ通常ダメージ。
🐍 きょうのコード
Python
main.py
import random
player_hp = 100
player_atk = 20
enemy_hp = 60
enemy_atk = 10
enemy_name = "スライム"
turn = 1
while player_hp > 0 and enemy_hp > 0:
print(f"⚔ ターン{turn}")
if random.random() < 0.1:
damage = player_atk * 2
print("💥クリティカル!")
else:
damage = player_atk
enemy_hp -= damage
print(f"あなたの攻撃!{enemy_name}に{damage}ダメージ")
print(f"敵のHP: {enemy_hp}")
if enemy_hp <= 0:
break
player_hp -= enemy_atk
print(f"{enemy_name}の攻撃!あなたに{enemy_atk}ダメージ")
print(f"あなたのHP: {player_hp}")
turn += 1
if enemy_hp <= 0:
print(f"🎉 {enemy_name}を倒した!")
このページの「▶ このページで実行」でそのまま動きます。Trinketを使うときは、上のコードをコピーして左のエリアに貼り付け、Runボタン(▶)を押します。
💡 きょうのポイント
random.random() は0以上1未満の小数を返します。< 0.1 なら10%、< 0.5 なら50%。確率設計の基本パターン。
🎮 チャレンジ
- 敵もクリティカルを出すようにしよう
- 確率を5%にしてクリティカルを貴重にしよう
- 「会心の一撃でHP10%以下なら3倍」のような追加ルールを
🔁 ふりかえり
- 確率があるとゲームはどう変わる?
- 10%は感覚的に多い?少ない?
- 本当に「運の悪い」プレイヤーをどうフォローする?
👨👩👧 おうちの人・先生へ
- 準備:なし。
- つまずきポイント:
random.random()とrandom.randint()の違い。 - 声かけ例:「ガチャの確率を作っているのと同じ感覚」と関連付けて。