PROGRAM PYTHON

Pythonスクリプト【コマンド選択式戦闘ゲーム】

 

コマンド選択式戦闘ゲームを作ろう

今回はランダム関数を使って、コマンド選択式の戦闘ゲームを作ります。
ゲームのルールは、以下のようになります。

ルール

  • ユーザー側がプレイヤー、コンピューター側がモンスターとなる
  • ユーザー、コンピューターが同時に「攻撃」「防御」「魔法」のどれかを選択する
  • 選んだ行動の組み合わせによって、ダメージ判定を行う
  • 先にHPが0になった方が負けとなる(両者同時に行動するので、相討ちもあり)

 

実行イメージ

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

 実行例
> python game1.py
>>> 行動を選択してください
>>> a:攻撃 b:防御 c:魔法 q:終了
>>> c
++ プレイヤー >>> [魔法] HP[16]
++ モンスター >>> [攻撃] HP[18]
:
:
>>> 行動を選択してください
>>> a:攻撃 b:防御 c:魔法 q:終了
>>> b
++ プレイヤー >>> [防御] HP[ 1]
++ モンスター >>> [攻撃] HP[ 0]
 
++ モンスターを倒しました! ++

 

ダメージ判定マトリックス

ダメージ判定マトリックスは、以下のようになります。
たとえば、ユーザーが攻撃をしてコンピューターが魔法を使った場合、プレイヤーのHPが2、モンスターのHPが4減ります。
遊ぶときに、色々と変えてみると面白いでしょう。

ダメージ判定 コンピューターの行動
攻撃 防御 魔法
PのHP MのHP PのHP MのHP PのHP MのHP
ユーザーの行動 攻撃 3 3 3 1 2 4
防御 1 3 0 0 3 0
魔法 4 2 0 3 1 1

メモ

PのHP:プレイヤーのHP
MのHP:モンスターのHP

 

Pythonスクリプト

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

 

スクリプト解説

2行目

まず、random関数を使うので、randomライブラリーをインポートします。

5行目

行動パターンの辞書を定義します。
aを入力したら「攻撃」、bを入力したら「防御」、cを入力したら「魔法」を実行します。

8~10行目

ダメージ判定マトリックスの値を3次元のリストで表しています。

13、14行目

プレイヤーとモンスターのHPを定義します。
それぞれ20を設定しています。

17行目

while文を使ってループ処理に入ります。条件にTrueを使っているので、無限ループとなります。
キャラクターのHPが0になるか、qを入力するとループが終了します。

22行目

input()関数を使って、プレイヤーの行動を入力します。

25行目

qが入力された場合は、break文によりループを抜けてスクリプトが終了します。

29行目

key()メソッドを使ってdic辞書からキーを抜き出し、list()関数でリストに変換しています。
そのリストをnot in条件で、a、b、c以外が入力された場合は、continue文によりループの先頭に戻ります。

35行目

ユーザーが入力したキー(a、b、c)を元に、dic辞書からキーに対応した値(攻撃、防御、魔法)をplay_act変数に代入します。

36行目

random.choice()関数によりdic辞書のキー(a、b、c)の中からランダムに取得して、その値(攻撃、防御、魔法)をmonst_act変数に代入します。

39行目~65行目

プレイヤーとモンスターの行動をif文で判定して、その行動に対応する数字をそれぞれのHPから引き算します。

68、69行目

max()関数を使って、HPの値がマイナスだった場合は0にします。

72、73行目

プレイヤーとモンスターの行動と残りのHPの値を表示します。

77行目以降

HPの値が0だった場合は、対応するメッセージを表示してからbreak文でループを抜けて、スクリプトを終了します。

 

-PROGRAM, PYTHON
-