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:インストーラーによるインストール

  1. Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
  2. ダウンロードしたインストーラーを実行する。
  3. 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから python コマンドを実行できない。
  4. 「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 要素を用いて構成されている.

要素プログラム内での用途
変数hpmpplacename によるゲーム状態の保持
hp - 50mp - 10 等によるパラメータ計算
if 文プレイヤーの選択および MP 残量に応じた処理の分岐
while 文ゲームのメインループ(無限ループ)の実現
defdungeon()castle()guild() の関数定義
printゲームのナレーションおよびステータスの出力
time.sleepテキスト表示間の待機によるテンポ制御
global関数内からグローバル変数(hpmpplace)を変更

3.2 使い方

  1. プログラムを実行すると,魔法世界への導入メッセージが表示された後,名前の入力が求められる.
  2. 名前を入力すると,現在の HP・MP が表示され,3 つの場所(ダンジョン,魔王城,冒険者ギルド)から行き先を数字(1,2,3)で選択する.
  3. 各場所の内容は以下のとおりである.
    • ダンジョン:火炎トカゲとの遭遇.物理攻撃(効果なし),魔法攻撃(MP 10 消費),逃げるの 3 択が提示される.物理攻撃または MP 不足の場合,HP が 50 減少する.
    • 魔王城:イベントなし.場所選択画面に戻る.
    • 冒険者ギルド:イベントなし.場所選択画面に戻る.
  4. イベント終了後,現在の HP・MP が表示され,再び場所の選択に戻る.

3.3 実行上の注意

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 が変更される