テキストベースのゲームは、プログラミングの基本スキルを楽しく学ぶための良い方法です。この章では、Pythonを使って「数字当てゲーム」を作成する方法をステップバイステップで解説します。
数字当てゲームの概要
ゲームの目的
コンピュータがランダムに選んだ数(1~100の範囲)を、プレイヤーが入力して当てるゲームです。プレイヤーには、ヒントとして「大きすぎる」や「小さすぎる」というメッセージが表示されます。
ゲームの流れ
- コンピュータがランダムな数を選ぶ。
- プレイヤーが数字を入力する。
- 入力値が正解かどうかを判定する:
- 正解ならゲーム終了。
- 間違いなら「ヒント」を表示して再挑戦。
- 回数制限やスコアを導入する(オプション)。
ステップ1:基本構造を作成
1. ゲームの基本コード
import random
def number_guessing_game():
print("数字当てゲームへようこそ!")
print("1~100の数字を当ててください。")
# ランダムな数を選択
secret_number = random.randint(1, 100)
while True:
try:
# ユーザーの入力を取得
guess = int(input("あなたの予想: "))
# 判定
if guess < secret_number:
print("小さすぎます!")
elif guess > secret_number:
print("大きすぎます!")
else:
print("正解です!おめでとうございます!")
break
except ValueError:
print("無効な入力です。数値を入力してください。")
# ゲームの実行
number_guessing_game()
詳しいコード解説はこちら
実行結果
正解までのプレイ例
数字当てゲームへようこそ!
1~100の数字を当ててください。
あなたの予想: 50
小さすぎます!
あなたの予想: 75
大きすぎます!
あなたの予想: 63
正解です!おめでとうございます!
ステップ2:回数制限を追加
1. 制限回数の設定
制限回数を追加することで、ゲームの難易度を上げられます。
改良版コード
import random
def number_guessing_game():
print("数字当てゲームへようこそ!")
print("1~100の数字を当ててください。")
secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 7 # 最大試行回数
while attempts < max_attempts:
try:
guess = int(input(f"あなたの予想(残り{max_attempts - attempts}回): "))
attempts += 1
if guess < secret_number:
print("小さすぎます!")
elif guess > secret_number:
print("大きすぎます!")
else:
print(f"正解です!おめでとうございます! {attempts}回で正解しました。")
break
except ValueError:
print("無効な入力です。数値を入力してください。")
else:
print(f"残念!正解は{secret_number}でした。")
# ゲームの実行
number_guessing_game()
実行結果
試行回数内で正解
数字当てゲームへようこそ!
1~100の数字を当ててください。
あなたの予想(残り7回): 50
小さすぎます!
あなたの予想(残り6回): 75
大きすぎます!
あなたの予想(残り5回): 63
正解です!おめでとうございます! 3回で正解しました。
試行回数を超過
数字当てゲームへようこそ!
1~100の数字を当ててください。
あなたの予想(残り7回): 10
小さすぎます!
...
残念!正解は45でした。
ステップ3:スコアシステムを追加
スコア計算の仕組み
- 初期スコア:100点。
- 減点:1回の試行ごとに10点減点。
- 最終スコア:試行回数に基づいて計算。
改良版コード
import random
def number_guessing_game():
print("数字当てゲームへようこそ!")
print("1~100の数字を当ててください。")
secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 7
score = 100
while attempts < max_attempts:
try:
guess = int(input(f"あなたの予想(残り{max_attempts - attempts}回): "))
attempts += 1
score -= 10
if guess < secret_number:
print("小さすぎます!")
elif guess > secret_number:
print("大きすぎます!")
else:
print(f"正解です!おめでとうございます! {attempts}回で正解しました。")
print(f"最終スコア: {score}")
break
except ValueError:
print("無効な入力です。数値を入力してください。")
else:
print(f"残念!正解は{secret_number}でした。スコア: 0")
# ゲームの実行
number_guessing_game()
ステップ4:再挑戦機能を追加
再挑戦の実装
def play_game():
while True:
number_guessing_game()
retry = input("もう一度挑戦しますか? (y/n): ")
if retry.lower() != "y":
print("ゲームを終了します。")
break
play_game()
図解:数字当てゲームの流れ
1. コンピュータがランダムな数を生成。
↓
2. プレイヤーが数字を入力。
↓
3. 正解を判定。
- 小さい → ヒントを表示
- 大きい → ヒントを表示
- 正解 → ゲーム終了
↓
4. 再挑戦するか確認。
まとめ
- 基本機能:ランダムな数字を当てるゲームで、基本的な入力と出力を学びました。
- エラーハンドリング:無効な入力や範囲外の入力に対応する方法を学びました。
- 拡張機能:回数制限、スコア計算、再挑戦機能を追加することで、ゲームをより楽しくしました。
次回は、さらに複雑なプロジェクトに挑戦し、学んだスキルを活用していきましょう!
次のステップ:ToDoリストアプリケーションの作成
次回は、ToDoリストアプリケーションを作成します。データ構造やファイル操作を活用して、実用的なプログラムを作りましょう!
コメント