■数字消し(思考型ゲーム)
カーソルを移動させて数字を加算していきます。10になると0に戻りますが、11以上では移動できなくなります。移動不能になっても自動的に判別しないため行き詰まったらescキーでゲームを終了させてください。
10行目で画面と変数とキャラクタをクリアしています。20行目ではカーソルの座標と点滅用変数の値を設定しています。30行目で数字をランダムに発生させ画面を埋め尽くすようにします。
40行目でカーソル位置にある文字を読み出し48を引きます。これは数字の文字コードが48から始まるためです。文字が0なら0に、文字が5なら5に、文字が9なら9の数字になります。120行目〜150行目がカーソルの移動処理です。170行目では移動先の文字と現在の値と加算し移動できない場合は100行目に戻ります。移動可能な場合は値を0にしてカーソル位置を空白にします。あとは100行目に戻ってゲームを繰り返します。
●プログラム
10 CLS:CLP:CLV
20 X=15:Y=10:B=0
30 FOR I=1 TO 640:PRINT RND(4)+1;:NEXT
40 C=SCR(X,Y)-48
100 LOCATE X,Y
110 B=B+1:IF B%40<20 THEN PRINT C; ELSE PRINT CHR$(1);
120 K=INKEY()
130 IF K=0 THEN GOTO 100
140 E=X-(K=28)+(K=29)
150 F=Y-(K=30)+(K=31)
160 D=SCR(E,F)-48
170 IF D<0 OR (D+C)>10 THEN GOTO 100
180 IF (D+C)=10 THEN C=0:D=0:LOCATE E,F:PRINT " ";
190 C=C+D
200 LOCATE X,Y:PRINT " ";
210 X=E:Y=F
220 GOTO 100
●変数表
B カーソル点滅用のタイマー変数
X カーソルのX座標
Y カーソルのY座標
E カーソルの移動先のX座標
F カーソルの移動先のY座標
I 繰り返し(ループ)用変数
C 数字の合計
D カーソルの移動先の位置にある文字コード(変数Cに加算する数値)
K 入力されたキーコード