【はじめてのプチコン】マップでの判定方法(2)回答 | りょうのゲーム塾

りょうのゲーム塾

再開、準備中。

解答例1

@MAPCHKT
GOSUB @GETMAPDT
IF C$=”壁” GOTO @L001
NAPRES=0
RETURN
@L001
MAPRES=1
RETURN

解説
最初にすでに紹介した@GETMAPDTサブルーチンを
使用するものと仮定しましょう。
このサブルーチンは指定位置(X,Y)のキャラクタをC$に返します。
そのキャラクタが通れないキャラクタだったら@L001へジャンプ
そうでないときは通れるキャラクタなのでMAPRESに0を入れて帰ります。
@L001はラベルを毎回考えているのが面倒なので重要でないラベルは
一時的な名前をつけておきます。
@L001以降は通れないキャラクタだったのでMAPRESに1を入れて帰ります。


解答例2

@MAPCHKT
MAPRES=1
GOSUB @GETMAPDT
IF C$=”壁” THEN RETURN
NAPRES=0
RETURN

解説
これは解答例1とほとんど同じですが、
サブルーチンの最初にMAPRES変数に1を代入した後で
通れないキャラクタの判定をします。
通れない場合にはRETURNで戻ればMAPRES変数には1が入っています。
最後にそうでない場合に0を代入して戻ります。

このサブルーチンは余計なラベルが減るのでプログラムが見やすくなります。