Python による簡単なアドベンチャーゲーム(変数,式,if,while,関数,print,time.sleep, def, global を使用)
本プログラムは,Python によるテキストベースのアドベンチャーゲームである.変数,式,条件分岐(if 文),繰り返し(while 文),関数定義(def),標準出力(print),タイミング制御(time.sleep),グローバル変数(global)をゲームプログラムの中で実践的に習得することを目的としている.
プレイヤーは名前・HP・MP を持つキャラクターを操作し,ダンジョン,魔王城,冒険者ギルドの 3 か所を舞台にしたイベントを体験する.プログラムは単一の .py ファイルで完結しており,Python 標準ライブラリのみを使用するため,追加パッケージのインストールは不要である.
1. 前準備
ここでは Python を使用する。Python がインストールされていない場合は,下記の「Python 3.12 のインストール(Windows 上)」を展開し,手順に従いインストールすること。
Python 3.12 のインストール(Windows 上) [クリックして展開]
以下のいずれかの方法で Python 3.12 をインストールする。Python がインストール済みの場合、この手順は不要である。
方法1:winget によるインストール
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
winget install -e --id Python.Python.3.12 --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 AssociateFiles=1 InstallLauncherAllUsers=1"
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
方法2:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから
pythonコマンドを実行できない。 - 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。
インストールの確認
コマンドプロンプトで以下を実行する。
python --version
バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。
2. 実行のための準備とその確認手順(Windows 前提)
2.1 プログラムファイルの準備
ソースコードをテキストエディタ(メモ帳,VS Code 等)に貼り付け,adventure.py として保存する(文字コード:UTF-8).
2.2 実行コマンド
コマンドプロンプトでファイルの保存先ディレクトリに移動し,以下を実行する.
python adventure.py
2.3 動作確認チェックリスト
| 確認項目 | 期待される結果 |
|---|---|
| プログラム起動時 | 魔法世界の導入メッセージが表示される |
| 名前入力後 | HP・MP が表示され,場所選択が提示される |
| 数字入力(1〜3) | 対応する場所のイベントが開始される |
| 無効な入力 | 「無効な選択肢です。再度選択してください。」と表示される |
3. 概要・使い方・実行上の注意
3.1 プログラムの概要
本プログラムは,以下の Python 要素を用いて構成されている.
| 要素 | プログラム内での用途 |
|---|---|
| 変数 | hp,mp,place,name によるゲーム状態の保持 |
| 式 | hp - 50,mp - 10 等によるパラメータ計算 |
| if 文 | プレイヤーの選択および MP 残量に応じた処理の分岐 |
| while 文 | ゲームのメインループ(無限ループ)の実現 |
| def | dungeon(),castle(),guild() の関数定義 |
| ゲームのナレーションおよびステータスの出力 | |
| time.sleep | テキスト表示間の待機によるテンポ制御 |
| global | 関数内からグローバル変数(hp,mp,place)を変更 |
3.2 使い方
- プログラムを実行すると,魔法世界への導入メッセージが表示された後,名前の入力が求められる.
- 名前を入力すると,現在の HP・MP が表示され,3 つの場所(ダンジョン,魔王城,冒険者ギルド)から行き先を数字(1,2,3)で選択する.
- 各場所の内容は以下のとおりである.
- ダンジョン:火炎トカゲとの遭遇.物理攻撃(効果なし),魔法攻撃(MP 10 消費),逃げるの 3 択が提示される.物理攻撃または MP 不足の場合,HP が 50 減少する.
- 魔王城:イベントなし.場所選択画面に戻る.
- 冒険者ギルド:イベントなし.場所選択画面に戻る.
- イベント終了後,現在の HP・MP が表示され,再び場所の選択に戻る.
3.3 実行上の注意
- プログラムの終了方法:メインループは無限ループ(
while True:)として実装されているため,通常の操作では終了しない.コマンドプロンプト上でCtrl + Cを入力して強制終了する. - HP がゼロ以下になった場合の動作:ゲームオーバー処理は実装されていない.HP が負の値になってもゲームは継続する.
- 入力値の検証:場所選択およびダンジョン内の選択において,選択肢以外の文字列を入力した場合,「無効な選択肢です。再度選択してください。」と表示された後,メインループの先頭に戻り,HP・MP が再表示される.
- 文字コード:ソースファイルの文字コードを UTF-8 以外に設定すると,日本語が正常に表示されない場合がある.
4. Python プログラム
動作画面
5. 使用する Python の概念
変数
データを記憶するための名前付きの領域である.= で値を代入し,プログラムの実行中に値を変更できる.
hp = 100
hp = hp - 50 # hp は 50 になる
条件分岐(if 文)
条件の真偽に応じて実行する処理を切り替える.elif は追加の条件,else はいずれにも該当しない場合の処理を記述する.
if choice == "1":
print("物理攻撃する。")
elif choice == "2":
print("魔法攻撃する。")
else:
print("無効な選択肢です。")
繰り返し(while 文)
条件が真である間,ブロック内の処理を繰り返す.while True: は明示的に終了するまで無限に繰り返す.
while True:
print("どうしますか?")
関数定義(def)
処理をひとまとまりにして名前を付ける構文である.定義した関数は,その名前で何度でも呼び出すことができる.
def dungeon():
print("ダンジョンに入った。")
dungeon() # 関数を呼び出す
グローバル変数(global)
関数の内部では,関数の外側で定義された変数(グローバル変数)への代入は原則できない.global 文で宣言することで,関数内からその値を変更できる.
hp = 100
def dungeon():
global hp
hp = hp - 50 # 関数の外の hp が変更される