今回は前回の応用でできると思います。
通路にいるプレイヤが指定された方向に進めるか、
判定するプログラムはどうなるでしょうか?
ここでプレイヤの位置を保存する変数をPX,PYとします。
プレイヤが右に進むためには右キー(ボタン)が押されている必要がありますが、
押されていたとしても右に壁があったら進めません。
要するに進めるか判定する必要があります。
すでに位置X,Yのマップデータが通路かどうかをチェックする
MAPCHKTサブルーチンがあるのでそれを利用します。
ここでは右に進めるか判断するサブルーチンを作成してみましょう。
MAPCHKTサブルーチンは変数X,Yの位置を調べ変数MAPRESに、
通路であれば0そうでなければ1が代入されて帰ってきます。
この条件で右に移動できるかどうかを判定するプログラムは、
X=PX+1
Y=PY
GOSUB @MAPCHKT
IF MAPRES GOTO @L0001
LOCATE PX,PY
PRINT ” ”;
PX=X
LOCATE PX,PY
PRINT ”人”;
@L0001
プレイヤの右を調べたいので調べる位置X,Yは
プレイヤのX座標がPX+1となります。
MAPCHKTサブルーチンで判定して壁だった場合には次のステップへ進みます。
通路だったら現在位置のプレイヤを消して、プレイヤ位置の更新をし、
その位置に人を表示します。