プログラミングの学習は、実際に何かを作りながら進めるのが一番効果的です。この記事では、Pythonの基本的な構文(変数、ループ、条件分岐)をすべて使って、シンプルな数当てゲームを作成します。
このプロジェクトを通して、複数の知識を組み合わせ、一つの動くプログラムを完成させる喜びを体験しましょう。
ゲームの概要
ゲームのルールはとてもシンプルです。
- コンピュータが1から50までの間でランダムな数字を一つ選びます。
- プレイヤーには、その数字を当てるためのチャンスが7回与えられます。
- プレイヤーが入力した数字が、正解の数字より大きいか小さいか、ヒントが表示されます。
- 7回以内に当てることができれば、ゲームクリアです。
早速、コードを見ていきましょう。
プログラムの構成要素
数当てゲームのコードは、いくつかの基本的なブロックに分けることができます。
1. 準備:モジュールのインポートと数値の設定
まず、プログラムの冒頭で、コンピュータがランダムな数字を選ぶための準備をします。これには、random
モジュールを使います。
# randomモジュールを読み込む
import random
# 1から50までのランダムな整数を生成
target_number = random.randint(1, 50)
print("1から50までの数字を当ててください。チャンスは7回です。")
random.randint(1, 50)
は、指定した範囲内のランダムな整数を生成する関数です。この生成された数字をtarget_number
という変数に代入し、ゲームの正解とします。
2. 繰り返し処理(for
ループ)
次に、プレイヤーに数字を7回入力してもらうためのループを作成します。今回は、繰り返す回数が決まっているので**for
ループ**が最適です。
# 1から7までの回数を数えるループ
for guess_count in range(1, 8):
print("数字を入力してください。")
guess = int(input())
range(1, 8)
は、1
から始まり7
までの整数を生成します。これにより、ループは7回繰り返され、プレイヤーは7回まで数字を入力できます。また、int(input())
は、入力された文字列を整数に変換しています。
3. 条件分岐(if
/elif
/else
)
プレイヤーが入力した数字が正解か、それとも外れているかを判定するために、if
/elif
/else
文を使います。
if guess < target_number:
print("もっと大きいです。")
elif guess > target_number:
print("もっと小さいです。")
else:
# 正解だった場合は、ループを抜ける
break
- もし
guess
がtarget_number
より小さければ、「もっと大きい」とヒントを出します。 - もし
guess
がtarget_number
より大きければ、「もっと小さい」とヒントを出します。 - どちらでもなければ、
guess
がtarget_number
と等しいということなので、else
ブロックが実行されます。
4. ループの脱出(break
文)
正解を当てた時点で、残りのチャンスがあってもループを続けたくありません。そこで**break
文**の出番です。
先ほどのelse
ブロックにあるbreak
は、ループを即座に終了させる役割を持っています。これにより、プレイヤーが正解した瞬間にゲームが終了し、次の処理へと進みます。
5. 結果の表示
最後に、ループを抜けた後、プレイヤーがゲームに勝ったのか負けたのかを表示します。
if guess == target_number:
print(f"あたり!{guess_count}回で当てました。")
else:
print(f"残念。正解は {target_number} でした。")
if guess == target_number:
という条件式で、ループを抜けた理由が「正解したから」なのか、「7回のチャンスを使い切ったから」なのかを判定します。そして、それぞれの結果に応じたメッセージを表示します。
まとめ
今回は、Pythonの基本的な構文を組み合わせて数当てゲームを作成しました。
import random
:ランダムな数値を生成するためにモジュールを読み込みました。for
ループ:決まった回数の繰り返し処理に利用しました。if
/elif
/else
:プレイヤーの入力に応じて、異なる処理を実行する条件分岐を作りました。break
:正解した場合にループを途中で終了させました。
このゲームのルールやヒントのメッセージ、挑戦回数などを自由に変更して、ぜひ自分だけの数当てゲームを作ってみてください。