解答例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を代入して戻ります。
このサブルーチンは余計なラベルが減るのでプログラムが見やすくなります。