PROGRAM PYTHON

Pythonスクリプト【迷路ゲーム】

 

迷路ゲームを作ろう

今回は2次元リストを使った迷路ゲームを作ります。
迷路は8x8のマスを持ち、Sのマスからスタートして、Gのマスがゴールです。
白いマスが移動できるマスで、黒いマスが移動できないマスとなります。

0 1 2 3 4 5 6 7
0 S
1
2
3
4
5
6
7 G

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

仕様

  • 2次元リストを使って迷路のイメージを定義する
  • 配列の要素の種類は0、1、2として、0は通行不可、1は通行可能、2はゴールとする
  • 移動キーは、wは上移動、sは下移動、aは左移動、dは右移動とする
  • qキーでスクリプトを終了する
  • ゴールに到達したらスクリプトを終了する

 

実行イメージ

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

 実行例
> python maze1.py
+++ 操作方法 [上:w][下:s][左:a][右:d][終了:q] +++
+++ 現在地 [0/0] +++
>>> s
+++ 現在地 [1/0] +++
>>> s
+++ 現在地 [2/0] +++
>>> d
:
:
+++ 現在地 [6/6] +++
>>> d
+++ 現在地 [6/7] +++
>>> s
+++ ゴール!! +++

 

Pythonスクリプト

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

 

スクリプト解説

2行目

UP、DOWN、LEFT、RIGHTに、それぞれ0、1、2、3の値を定義します。

3行目

キー辞書を定義します。
wがUP、sがDOWN、aがLEFT、dがRIGHTになります。

7~14行目

マップの2次元リストを定義します。
0が移動不可、1が移動可能、2がゴールとなります。

17~21行目

各種メッセージを定義します。

24~83行目

迷路クラスを定義します。

34、35行目

現在地表示メソッドを定義します。
[縦/横]でマップリストのインデックスを表しています。

38~83行目

移動メソッドを定義します。
w、s、a、dキーの操作でマスを移動します。
入力したキーに対応するマスに移動できるかどうか判断します。
リストのインデックスがマイナス、インデックスの最大値以上、マスの値が0だった場合は、移動ができない旨のメッセージを表示します。
移動したマスの値が2だった場合は、ゴールとなりゲームは終了します。

90、91行目

スタート地点を定義します。
ここでは、マップリストの[0][0]をスタート地点にしています。

94行目

迷路クラスを生成します。

100~125行目

while文を使ってループ処理に入ります。条件にTrueを使っているので、無限ループとなります。
ゴールに到達するか、qを入力するとループが終了します。

103行目

迷路の現在地(インデックス)を表示します。

106行目

input()関数を使って、迷路の中を移動します。

109、110行目

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

113~118行目

入力したキーの値がキー辞書にあるかどうかを判定します。
定義されていないキーが入力された場合は、ループの先頭に戻ります。

121~125行目

移動メソッドを呼び出します。
戻り値がTrueの場合は、break文によりwhileループを抜けて、スクリプトが終了します。

 

-PROGRAM, PYTHON
-