
@DISPINFO(DISPplay INFOmation)サブルーチンの解説をします。
まずこのサブルーチンはすべての情報欄にあるデータをコックピットに表示します。
表示する情報は、
①プレイヤ残機数
②エネミー残機数
③ハイスコア
④スコア
⑤ステージ番号
の5項目です。
しかし、実際のサブルーチンでは4つのサブルーチンしか呼び出していません。
感の良い人はわかっていると思いますが、
最後のサブルーチン(@DISPSN)は4つのサブルーチンを呼び出した後、
そのまま最後のサブルーチンにつながっているので実行されます。
では、各サブルーチンの説明です。
@DISPSN(DISPlay Stage Number)
ステージ番号の表示を行います。
ステージ番号はマップ番号とエネミー番号の組み合わせになります。
表示位置を LOCATE で指定し、PRINT 文の省略形である ? で表示しています。
STGNUM はステージ番号ですがこの番号は0から始まっているので+1してあります。
@DISPPN(DISPlay Player Number),DISPEN(DISPlay Enemy Number)
この2つのサブルーチンは同じ処理を行っているので一度に説明します。
内容は簡単で LOCATE により表示位置を指定し、
プレイヤおよびエネミーの数を表示しています。
残りの数を表示するより残りの残機を文字で表示する方がわかりやすいので、
ここでは少々工夫をしています。
説明のために空白を(空)プレイヤもしくはエネミーを(主)と置き換えると、
MID$ 関数の1番目の引数は7個の空白と7個のプレイヤもしくはエネミー文字を
足しています。
空空空空空空空主主主主主主主
2番目の引数はプレイヤもしくはエネミーの数です。
3番目の引数は7が指定されています。
ここでプレイヤの残機が3だったとします。
すると MID$ は文字列の3桁目を先頭に7文字を切り取ります。
0123←3桁目から
空空空空空空空主主主主主主主
___1234567←7文字分
要するに。。。空空空空主主主
プレイヤ文字が3人分並びます。
じゃ、もし残機が1のときは?
01←1桁目から
空空空空空空空主主主主主主主
_1234567←7文字分
要するに。。。空空空空空空主
プレイヤが1人分並びます。
これを表示しています。