PROGRAM PYTHON

Pythonスクリプト【モンスターがランダムに出現する戦闘ゲーム】

 

モンスターがランダムに出現する戦闘ゲームを作ろう

今回は敵のモンスターがランダムに出現するゲームを作ります。
スクリプトのベースとして、前回作った複数キャラクターを使った戦闘ゲームを利用します。

基本的な仕様は前回と同じですが、敵のモンスターのパラメーターをあらかじめ複数用意しておき、その中から1~3体がランダムで出現するようにします。
また、前回はモンスターの状態が分からなかったので、「元気」「疲労」「瀕死」というキーワードでモンスターの疲労度をあらわすことにします。

ルール

  • ユーザー側がプレイヤー、コンピューター側がモンスターとなる
  • キャラクターはユーザー側が3人、コンピューター側はランダムで1~3体出現する
  • ユーザー側、コンピューター側のすべてのキャラクターが行動を選択してから戦闘を開始する
  • コンピューター側の行動はランダムだが、キャラクターごとに行動の重みをつける
  • キャラクターの素早さに乱数を掛けた値の順に行動する
  • 攻撃する相手はランダムに決定する
  • キャラクターの行動とパラメーターによってダメージ値を計算する
  • 先にすべてのキャラクターのHPが0になった方が負けとなる

 

実行イメージ

実行イメージは、以下のようになります。
ユーザーはa(攻撃)、b(防御)、c(魔法)のどれかを入力します。
qを入力するとゲームは終了します。

 実行例
> python game5.py
+++++++++++++++++
++ モンスターAが現れた!
++ モンスターHが現れた!
++ モンスターEが現れた!
+++++++++++++++++
>>> 行動を選択してください
>>> a:攻撃 b:防御 c:魔法 q:終了
[プレイヤーA] >>> a
[プレイヤーB] >>> a
[プレイヤーC] >>> c
++ モンスターEは攻撃を実行! プレイヤーAは2のダメージ
++ モンスターHは攻撃を実行! プレイヤーBは0のダメージ
++ プレイヤーBは攻撃を実行! モンスターHは5のダメージ
++ プレイヤーCは魔法を実行! モンスターAは9のダメージ
++ モンスターAは防御を実行!
++ プレイヤーAは攻撃を実行! モンスターHは5のダメージ
-----------------
++ プレイヤーA:HP[28]
++ プレイヤーB:HP[25]
++ プレイヤーC:HP[20]
-----------------
-----------------
++ モンスターA:[疲労]
++ モンスターH:[疲労]
++ モンスターE:[元気]
-----------------
:
:
[プレイヤーA] >>> a
[プレイヤーB] >>> a
++ プレイヤーBは攻撃を実行! モンスターAは3のダメージ
++ プレイヤーAは攻撃を実行! モンスターAは7のダメージ
<< モンスターAを倒しました!!!!! >>
-----------------
++ プレイヤーA:HP[24]
++ プレイヤーB:HP[10]
-----------------
 
+++++++++++++++++
++ モンスターは全滅しました ++
+++++++++++++++++

 

Pythonスクリプト

ゲームのPythonスクリプトは、以下のようになります。

 

スクリプト解説

今回は前回から変更になった部分を解説します。
前回および前々回の解説と併せて参照してください。

13~21行目

モンスター側のキャラクターのパラメーターをリストで定義します。
171行目の処理で、この中からランダムでキャラクターを選択します。

142~158行目

戦闘中のモンスターのHPの減り具合で、疲労度をあらわす「元気」「疲労」「瀕死」のいずれかを返す関数です。

168行目

モンスターの出現数を1~3の範囲でランダムで決定します。

171行目

random.sample()関数を使って、モンスターのリストの中からkオプションの数だけ重複なしのランダムで選択します。
kオプションは、168行目で取得したモンスターの出現数を設定します。

179~182行目

ランダムで選択されたモンスターを表示します。

315~319行目

残っているモンスターの疲労度を表示します。

 

-PROGRAM, PYTHON
-