数当てゲームを関数化しよう
第26回の数当てゲームを関数化して整理します。さらに「もう一度遊ぶ?」のループを追加して、何回でも遊べるゲームに進化させます。
🧠 できるようになること
- 既存のコードを関数化できる
- while で「もう一度遊ぶ」ループを書ける
- 完成度の高い小さなゲームを作れる
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- Trinket(https://trinket.io/python)
🖼 できあがり
数当てゲームを何回でも遊べます。1回終わるごとに「もう一度?」と聞かれ、Yesなら新しい答えで再開。
📺 実行結果
== 数当てゲーム == 1〜10を当ててね: 5 もっと大きい数だよ 1〜10を当ててね: 8 🎉 正解! もう一度?(yes/no): no 遊んでくれてありがとう!
🚀 やりかた
def play_game():1ゲーム分の関数を作る。- 答えを random で決定。
- while ループで「正解するまで」予想を受け付ける。
def main():で「もう一度?」のループ。- main() を呼んでスタート。
🐍 きょうのコード
Python
main.py
import random
def play_game():
answer = random.randint(1, 10)
while True:
guess = int(input("1〜10を当ててね: "))
if guess == answer:
print("🎉 正解!")
break
elif guess < answer:
print("もっと大きい数だよ")
else:
print("もっと小さい数だよ")
def main():
print("== 数当てゲーム ==")
while True:
play_game()
again = input("もう一度?(yes/no): ")
if again != "yes":
break
print("遊んでくれてありがとう!")
main()
上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。
💡 きょうのポイント
random.randint(1, 10) は1〜10の整数をランダムに返します(10含む)。関数化することで「1ゲーム分」と「全体の流れ」が分かれて読みやすくなりました。
🎮 チャレンジ
- 範囲を1〜100に広げて、当てるまでの回数を数えよう
- 「3回までしか挑戦できない」モードを追加しよう
- 難易度を選べるようにしよう(1〜10、1〜50、1〜100)
🔁 ふりかえり
- 関数化してコードはどう変わった?読みやすくなった?
random.choiceとrandom.randintの違いは?- 次回はミニ作品。何を作るかワクワクしている?
👨👩👧 おうちの人・先生へ
- 準備:なし。
- つまずきポイント:
random.randint(1, 10)は10含む(rangeと違う)。 - 声かけ例:「これだけでもう完成度の高いゲーム」と達成感を与えて。