7日目のゴールと今日やること
7日目のテーマは
「数当てゲームを“自分の作品”として仕上げる」 ことです。
新しい文法はほとんど増やしません。
今日はこの3つをやります。
1つ目は、これまで作ってきた数当てゲームの「全体像」を言葉で整理すること。
2つ目は、コードにコメントをつけて「他人に渡せるコード」にすること。
3つ目は、ちょっとしたアレンジ(ご褒美メッセージやスコア)を足して「自分らしさ」を入れること。
ここまで来たあなたは、もう「動くゲームを書ける人」です。
7日目は、その実感をちゃんと形にしていきます。
数当てゲームの「全体の流れ」を言葉で説明してみる
ゲームのストーリーを頭の中で再生する
あなたが作ってきた数当てゲームは、ざっくり言うとこう動いています。
ゲーム開始時に、難易度を選ぶ。
難易度に応じて、正解の範囲と最大回数が決まる。
その設定を使って、1回ぶんのゲーム(play_game)が始まる。
ゲームの中では、プレイヤーが数字を入力する。
入力が数字かどうかをチェックする。
正解と比べて「大きい」「小さい」「正解」を表示する。
当たるか、回数制限に達したら、そのゲームは終了する。
終わったあと、「もう一度遊ぶ?」と聞いて、続けるかどうかを決める。
この流れを、コードを見ずに説明できるなら、
あなたはもう「仕組みを理解している側」にいます。
コアとなる要素をもう一度整理する
ランダムな正解と範囲
正解の数字は、random モジュールで作っています。
answer = random.randint(min_value, max_value)
Pythonここで大事なのは、
「正解の範囲を引数で変えられるようにした」という点です。
0〜9 でも、0〜99 でも、0〜999 でも、
play_game の中身は変えずに、呼び出し側の設定だけで変えられます。
これは「ロジックはそのまま、ルールだけ変える」という、
プログラミングの強いパターンです。
繰り返しと終了条件
ゲームの心臓部は while です。
while guess != answer:
...
Pythonここに、「まだ正解していないあいだは続ける」という意味を込めています。
さらに、回数制限も加えました。
if tries >= max_tries:
print("ゲームオーバー")
break
Python正解したときは条件が変わって自然にループが終わる。
回数オーバーのときは break で強制的に終わる。
この「終わり方が2種類ある」という構造を理解できていると、
今後もっと複雑なゲームやアプリにも応用しやすくなります。
入力チェックとエラー回避
入力部分では、isdigit を使って「数字かどうか」を確かめています。
guess_text = input("あなたの予想を入力してください: ")
if not guess_text.isdigit():
print("数字を入力してください。")
continue
Pythonここでのポイントは、
「おかしな入力をされても、ゲームが落ちないようにしている」ことです。
プログラムが壊れないように守るコードは、
見た目の派手さはないけれど、実はとても大事な“土台”です。
関数と難易度選択を「設計の目線」で見直す
play_game は「1回ぶんのゲームの箱」
play_game は、こういう役割を持っています。
「指定された範囲と回数制限で、数当てゲームを1回分行う」
引数で設定を受け取り、
中ではゲームの流れだけに集中しています。
def play_game(min_value, max_value, max_tries):
answer = random.randint(min_value, max_value)
...
Pythonこの「関数の責務がはっきりしている」状態は、
コードを読みやすく、直しやすくします。
choose_level は「設定を決める係」
choose_level は、
「難易度に応じて min_value, max_value, max_tries を返す」関数です。
def choose_level():
...
if choice == "1":
return 0, 9, 7
Pythonここで大事なのは、
「難易度の中身(範囲や回数)はここだけを見れば分かる」
という状態になっていることです。
ルールを変えたくなったら、
play_game ではなく choose_level をいじればいい。
この分離が、設計としてとてもきれいです。
コメントをつけて「他人に渡せるコード」にする
コメントは「未来の自分へのメモ」
7日目では、コードにコメントを足してみましょう。
「何をしているか」ではなく、「なぜそうしているか」を書くのがコツです。
完成版にコメントをつけると、こんな感じになります。
import random # ランダムな数字を作るためのモジュール
def play_game(min_value, max_value, max_tries):
# 指定された範囲と回数制限で、数当てゲームを1回分行う
answer = random.randint(min_value, max_value) # 正解の数字をランダムに決める
guess = None # 最初はまだ何も予想していない状態
tries = 0 # チャレンジ回数
print("数当てゲームへようこそ!")
print(f"{min_value}〜{max_value} の中から、正解の数字を当ててください。")
print("チャレンジできるのは最大", max_tries, "回です。")
while guess != answer:
guess_text = input("あなたの予想を入力してください: ")
# 入力が数字かどうかをチェック(数字以外ならやり直し)
if not guess_text.isdigit():
print("数字を入力してください。")
continue
guess = int(guess_text)
tries += 1 # 有効なチャレンジなので回数を増やす
# 正解と比較してヒントを出す
if guess < answer:
print("もっと大きい数字です。")
elif guess > answer:
print("もっと小さい数字です。")
else:
print("正解です!おめでとう!")
break
# 回数制限に達したらゲームオーバー
if tries >= max_tries:
print("残念!規定回数に達しました。ゲームオーバーです。")
print("正解は", answer, "でした。")
break
print("あなたのチャレンジ回数:", tries)
print("-----")
def choose_level():
# 難易度を選んでもらい、それに応じた設定を返す
print("難易度を選んでください:")
print("1: かんたん(0〜9, 最大7回)")
print("2: ふつう(0〜99, 最大10回)")
print("3: むずかしい(0〜999, 最大12回)")
while True:
choice = input("番号を入力してください (1/2/3): ")
if choice == "1":
return 0, 9, 7
elif choice == "2":
return 0, 99, 10
elif choice == "3":
return 0, 999, 12
else:
print("1, 2, 3 のどれかを入力してください。")
# メインループ:難易度を選んでゲームを遊び、続けるかどうかを聞く
while True:
min_value, max_value, max_tries = choose_level()
play_game(min_value, max_value, max_tries)
again = input("もう一度遊びますか? (y/n): ")
if again.lower() != "y":
print("遊んでくれてありがとう!")
break
Pythonコメントをつけることで、
「このコードを初めて見る人」や「数ヶ月後の自分」が、
すっと理解しやすくなります。
ちょっとしたアレンジで「自分のゲーム」にする
例1:成績に応じてメッセージを変える
例えば、
「少ない回数で当てたら褒める」
という要素を足してみましょう。
play_game の最後に、こんな処理を足せます。
if guess == answer:
if tries <= max_tries // 3:
print("すごい!かなりの名探偵ですね!")
elif tries <= max_tries // 2:
print("なかなかいい勘してます!")
else:
print("粘り勝ちですね、お見事!")
Python同じ「正解」でも、
どれくらいの回数で当てたかによってメッセージが変わると、
ゲームにちょっとした“味”が出ます。
例2:通算プレイ回数やベストスコアを記録する
もう一歩進めるなら、
メインループの外に変数を置いて、
「何回遊んだか」「最小チャレンジ回数」などを記録することもできます。
今日はそこまでコードにはしませんが、
「ゲームをまたいだ情報を持つ」という発想が出てきた時点で、
あなたの頭はもうアプリ開発の方向に向き始めています。
今日いちばん深く理解してほしいこと
「説明できるコード」は強い
7日目で一番大事なのは、
コードを「動かせる」だけでなく、
「自分の言葉で説明できる」 ようになることです。
この if は何のためにあるのか。
この while は、どんな条件で終わるのか。
この関数は、何を受け取って、何をしているのか。
それを言葉にできるようになると、
新しいコードを読むのも、書くのも、一気に楽になります。
「ルールをいじりたくなる感覚」が、もうプログラマー
難易度を変えたり、
回数制限を変えたり、
メッセージを変えたり。
「ここ、こうしたらもっと面白くなるかも」と思えた時点で、
あなたはもう“使う側”ではなく“作る側”に立っています。
7日間の数当てゲーム学習を振り返って
この1週間であなたは、
input と int で「入力された数字」を扱えるようになり、
if / elif / else で「条件によって分岐する」ことを覚え、
while で「当たるまで繰り返す」流れを作り、
random で「毎回違う世界」を作り、
入力チェックや回数制限で「壊れないゲーム」にし、
関数と引数で「柔軟で再利用できる設計」にたどり着きました。
これはもう、立派な「ひとつのアプリ」です。
最後に、ひとつだけ聞かせてください。
この数当てゲーム、
あなたは誰に遊んでもらいたいですか?
友だちでも、家族でも、未来の自分でもいい。
「誰かの顔を思い浮かべてコードを書く」ようになると、
プログラミングは、ただの技術ではなく、
ちょっとした“表現”になっていきます。

