Python | 1 日 90 分 × 7 日アプリ学習:数当てゲーム(初級編)

Python
スポンサーリンク

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 random
random.randint(0, 9)

この2行で、
ゲームの世界が「毎回違うもの」になります。

数当てゲームに限らず、
ランダムはゲームづくりの超重要要素です。

「同じルールだけど、毎回展開が違う」
これがゲームの面白さの源です。

2つ目:ランダムでも“ルールは変わらない”

正解が 7 だろうが、4 だろうが、99 だろうが、
やっていることは同じです。

  • プレイヤーが数字を入力する
  • 正解と比べて「大きい」「小さい」「正解」を判定する

ルールは変わらない。変わるのは“中身の数字”だけ。

この感覚を持てると、
「中身が変わっても、ロジックはそのまま使い回せる」
というプログラミングの強みが見えてきます。


4日目へのつなぎ

3日目は、

  • 正解の数字をランダムにした
  • 数の範囲を変えられるようにした
  • 「毎回違うゲーム」になった

ここまで来ました。

4日目からは、

  • 入力が数字じゃなかったときにエラーで落ちないようにする
  • 「回数制限」をつけて、ゲームオーバーを導入する
  • メッセージを工夫して、ゲームとしての“雰囲気”を出す

といった、“ゲームのルールと安全性”を強化していきます。

最後にひとつ、あなたに問いを投げます。

random.randint(0, 9) の 0 と 9 を、
あなたならどんな数字に変えてみたいですか?

10〜99 にして「2桁限定ゲーム」にするのもいいし、
1〜6 にして「サイコロ当てゲーム」にするのもアリです。

その「自分でルールを変えてみたい」という感覚が、
もう立派な“ゲームプログラマーの入り口”です。

タイトルとURLをコピーしました