PROGRAM PYTHON

Pythonスクリプト【迷路ゲーム~敵あり】

 

敵が出る迷路ゲームを作ろう

今回は前回のトラップの代わりに敵が出る迷路ゲームを作ります。
敵が出現すると戦闘になり、プレイヤーと敵がランダムで攻撃を行います。
どちらかのHPが0になると戦闘は終了して、プレイヤーが負けた場合はそこでゲームオーバーになります。
敵を倒すとゴールドを取得できます。
ゴールに到着するまでに合計でいくらゴールドが貯まるかを競います。
なお、迷路に敵が無限にいるのはおかしいので、出現する敵の数には最大数を設定しています。

ゲームの仕様は、以下のようになります。

仕様

  • 2次元リストを使って迷路のイメージを定義する
  • 配列の要素の種類は0、1、2、3として、0は通行不可、1は通行可能、2はゴール、3は回復ポイントとする
  • 移動キーは、wは上移動、sは下移動、aは左移動、dは右移動とする
  • qキーでスクリプトを終了する
  • キャラクターにHPを設定する
  • 敵がランダムに出現して戦闘を行う
  • 敵を倒すとゴールドが得られ、プレイヤーが負けるとゲームオーバーとなる
  • 回復ポイントを設定して、そのマスに入るとキャラクターのHPが全快する
  • ゴールに到達したらスクリプトを終了する

 

実行イメージ

実行イメージは、以下のようになります。
現在地は、2次元リストのインデックスで、[縦/横]という意味です。
qを入力するとゲームは終了します。

 実行例
> python maze3.py
++ 操作方法 [上:w][下:s][左:a][右:d][終了:q]
++ 現在地 [00/00]
>>> d
++ 現在地 [00/01]
>>> d
++ 現在地 [00/02]
>>> d
++ 現在地 [00/03]
>>> d
++ 現在地 [00/04]
>>> s
++ 現在地 [01/04]
>>> d
+++ 盗賊があらわれた!
+ [1]冒険者は0のダメージ
+ [2]盗賊は17のダメージ
+++ 冒険者は盗賊を倒しました!
+++ 冒険者の残りのHPは200です
+++ 冒険者は399のゴールドを得た
:
:
+++ ゴールに到着しました!
+++ 冒険者は合計4144ゴールド取得しました

 

Pythonスクリプト

ゲームのPythonスクリプトは、以下のようになります。
今回の迷路は、16 x 16 のマスを定義しています。

 

スクリプト解説

今回は前回と同じ個所は割愛しています。
前回のスクリプトは、以下を参照してください。

121行目

敵とのエンカウントするタネの値を計算します。
歩数に0~299に100を割り算した値を足し、それに1~5を掛けます。

124行目

以下の条件で敵とエンカウントします。
・敵が残っている
・エンカウント値が19以上
・マスの値が1

127行目

敵キャラクターのインスタンスを生成します。
HPと所持金をランダムに設定します。

128行目

キャラクターリストに敵のインスタンスを追加します。

134~143行目

プレイヤーか敵のHPが0になるまで無限ループで、戦闘関数を呼び出します。

137行目

キャラクターリストからランダムでプレイヤーか敵のどちらかが選択して、戦闘関数を呼び出します。

150行目

プレイヤーが勝った場合は、キャラクターリストから敵のインスタンスを削除します。

158行目

プレイヤーの所持金に敵の所持金を追加します。

174~182行目

キャラクタークラスを定義します。

185~198行目

戦闘関数を定義します。
引数で渡されたキャラクターのHPをランダムでダメージ値を引き算します。

212行目

プレイヤーキャラクターのインスタンスを生成します。

213行目

キャラクターリストにプレイヤーキャラクターを定義します。

 

-PROGRAM, PYTHON
-