3日目のゴールと今日やること
3日目のテーマは
「毎回“違う正解”の数当てゲームにして、ゲームらしさを一気に上げる」
ことです。
1日目:1回勝負の数当て
2日目:当たるまで何回もチャレンジできる数当て
ここまで来ました。
今日はここに、
- 正解の数字をランダムにする
- 「0〜9」ではなく「0〜99」など、範囲を変えられるようにする
- ゲームの“説明メッセージ”を少し整える
という要素を足して、
「毎回ちゃんと遊べるゲーム」 にしていきます。
ランダムな数字を作るには?
「毎回違う正解」を作りたい
今までは、
answer = 7
Pythonのように、正解を固定していました。
これだと、
一度ゲームの中身を知ってしまえば、
何度やっても 7 を入力すれば終わってしまいます。
ゲームとして面白くするには、
「毎回、正解が変わる」 必要があります。
そこで使うのが、random モジュールです。
random モジュールを使ってみる
import で「道具箱」を持ってくる
Python には、
「標準ライブラリ」と呼ばれる“道具箱”がたくさん用意されています。
ランダムな数字を作る道具は、random というモジュールの中に入っています。
まずは、これを読み込みます。
import random
Pythonこれは、
「random という道具箱を使えるようにする」
という意味です。
randint で「指定した範囲の整数」を作る
random モジュールの中には、randint という関数があります。
n = random.randint(0, 9)
print(n)
Pythonこれを実行すると、
0〜9 のどれかの整数がランダムに出てきます。
例えば、何回か実行すると、
3
7
0
9
のように、毎回違う数字が出てきます。
ここで重要なのは、
random.randint(0, 9)は「0 以上 9 以下の整数」を返す- 両端(0 と 9)も含まれる
ということです。
正解の数字をランダムにする
2日目の answer を置き換える
2日目では、こう書いていました。
answer = 7 # 正解の数字
Pythonこれを、ランダムに変えます。
import random
answer = random.randint(0, 9)
Pythonこれで、
ゲームを実行するたびに、
正解の数字が 0〜9 のどれかに変わります。
メッセージもランダム前提にする
プレイヤーに説明するときも、
ランダムな範囲を伝えてあげましょう。
print("数当てゲームへようこそ!")
print("0〜9 の中から、正解の数字を当ててください。")
Pythonここは 2日目と同じですが、
中身の answer が毎回変わるようになったことで、
ゲームとしての“新鮮さ”が生まれます。
2日目の「当たるまで繰り返す」コードに組み込む
2日目の完成形を思い出す
2日目のコードは、こうでした。
answer = 7 # 正解の数字
guess = -1 # 最初は絶対に正解じゃない値
tries = 0 # 何回チャレンジしたか
print("数当てゲームへようこそ!")
print("0〜9 の中から、正解の数字を当ててください。")
while guess != answer:
guess_text = input("あなたの予想を入力してください: ")
guess = int(guess_text)
tries += 1 # チャレンジ回数を1増やす
if guess < answer:
print("もっと大きい数字です。")
elif guess > answer:
print("もっと小さい数字です。")
else:
print("正解です!おめでとう!")
print("あなたは", tries, "回目で正解しました。")
Pythonここから、answer = 7 をランダムに変えます。
3日目版:ランダム正解の数当てゲーム
コード全体
import random
answer = random.randint(0, 9) # 0〜9 のどれかが正解になる
guess = -1 # 最初は絶対に正解じゃない値
tries = 0 # 何回チャレンジしたか
print("数当てゲームへようこそ!")
print("0〜9 の中から、正解の数字を当ててください。")
while guess != answer:
guess_text = input("あなたの予想を入力してください: ")
guess = int(guess_text)
tries += 1 # チャレンジ回数を1増やす
if guess < answer:
print("もっと大きい数字です。")
elif guess > answer:
print("もっと小さい数字です。")
else:
print("正解です!おめでとう!")
print("あなたは", tries, "回目で正解しました。")
Pythonこの時点で、
「毎回、正解が変わる数当てゲーム」 が完成しています。
実行してみたときのイメージ
例:正解が 4 だった場合
(もちろん、プレイヤーからは正解は見えません)
数当てゲームへようこそ!
0〜9 の中から、正解の数字を当ててください。
あなたの予想を入力してください: 7
もっと小さい数字です。
あなたの予想を入力してください: 2
もっと大きい数字です。
あなたの予想を入力してください: 4
正解です!おめでとう!
あなたは 3 回目で正解しました。
ここでのポイントは、
「プログラムをもう一度実行すると、正解が変わる」 ことです。
数の範囲を変えてみる
0〜99 にしてみる
ゲームを少し難しくしたいなら、
正解の範囲を広げてみましょう。
answer = random.randint(0, 99)
print("0〜99 の中から、正解の数字を当ててください。")
Pythonこれだけで、
「2桁までの数当てゲーム」に変わります。
深掘り:範囲を変えるときに気をつけること
範囲を変えるときは、
random.randint(最小値, 最大値)の両方を変える- プレイヤーへの説明メッセージも同じ範囲にする
この2つをセットで変えるのが大事です。
コードと説明がズレていると、
プレイヤーは「え、そんな大きい数字も出るの?」と混乱します。
3日目で特に深く理解してほしいこと
1つ目:random は「毎回違う世界を作るスイッチ」
import randomrandom.randint(0, 9)
この2行で、
ゲームの世界が「毎回違うもの」になります。
数当てゲームに限らず、
ランダムはゲームづくりの超重要要素です。
「同じルールだけど、毎回展開が違う」
これがゲームの面白さの源です。
2つ目:ランダムでも“ルールは変わらない”
正解が 7 だろうが、4 だろうが、99 だろうが、
やっていることは同じです。
- プレイヤーが数字を入力する
- 正解と比べて「大きい」「小さい」「正解」を判定する
ルールは変わらない。変わるのは“中身の数字”だけ。
この感覚を持てると、
「中身が変わっても、ロジックはそのまま使い回せる」
というプログラミングの強みが見えてきます。
4日目へのつなぎ
3日目は、
- 正解の数字をランダムにした
- 数の範囲を変えられるようにした
- 「毎回違うゲーム」になった
ここまで来ました。
4日目からは、
- 入力が数字じゃなかったときにエラーで落ちないようにする
- 「回数制限」をつけて、ゲームオーバーを導入する
- メッセージを工夫して、ゲームとしての“雰囲気”を出す
といった、“ゲームのルールと安全性”を強化していきます。
最後にひとつ、あなたに問いを投げます。
random.randint(0, 9) の 0 と 9 を、
あなたならどんな数字に変えてみたいですか?
10〜99 にして「2桁限定ゲーム」にするのもいいし、
1〜6 にして「サイコロ当てゲーム」にするのもアリです。
その「自分でルールを変えてみたい」という感覚が、
もう立派な“ゲームプログラマーの入り口”です。

