■GETSPACE
このGETSPACEサブルーチンは現在のステージマップにおいて壁でない移動できるスペースを見つけます。
今回のプログラムの場合はプレイヤやエネミー(敵)をマップ上に配置するため使用しています。
このサブルーチンを呼び出したあとに変数XとYに座標が代入されていますが、座標はランダムに抽出されます。
それでは順を追って説明します。
@GETSPACE
X=RND(23):Y=RND(23)
GOSUB @GETCHKW
IF F GOTO @GETSPACE
RETURN
まずランダムにXおよびY座標を決めます。
ステージのマップの大きさは23×23です。
座標でいうならX座標およびY座標共に、0から22の間です。
RND関数は0から引数に指定された整数値未満の値をランダムに返します。
ランダムに抽出された座標が壁であるか判定するためにGETCHKWサブルーチンを呼び出します。
このサブルーチンを呼び出した後に結果がフラグ変数Fに代入されるので、その変数Fを判断します。
IF文は条件式を記述しますが、その条件が真なのか偽なのかを判定します。
条件式がない場合にはその値が0のとき偽で0でない時真となります。
変数Fにはフラブ値が代入されているので、真の場合には1、そうでない場合には0が代入されています。
なのでIF文で判断する場合
IF F THEN ・・・
となります。
今回はもし真の場合には壁なのでもう一度ラベルGETSPACEに戻り、再度ランダムに座標を作り繰り返します。
もし偽の場合にはスペースが見つかったわけですからサブルーチンから戻ります。
以上でマップ上で壁でないスペースを見つけ、その座標をランダムに求めることができました。