インベーダーゲームです
■動作制限
Ichigojam BASIC 1.2.2以上で動作します。
1.2.1以下だとおそらく動作しません。
■ゲーム説明
敵は弾を撃ちません。だんだん近づいてくるだけです。
自機の段まで敵が来たらゲームオーバーです。
すべて倒すと次の面になり、敵が少し早くなります。
文字サイズを大きくしています。
元に戻すにはVIDEO1として下さい。
■操作
←→:移動
スペース:弾を撃つ
■ヒント
上手に倒さないと1面すらクリアできません。
倒し方を工夫しましょう。
■変数表
プログラムを作るときは、いつもこんな変数表を用意しています。
今回は、このプログラムを作るときに使っていた変数表を公開します。
A 右移動COPYで使用(メモリコピー 数Aアドレスへ数Bのアドレスから数Cの長さ分コピー(数Cマイナスでコピー方向が逆になる)
B 右移動COPYで使用
C 右移動COPYで使用
D 敵の移動方向 1:右方向 -1:左方向
E 最上段の敵のY座標
F 左移動COPYで使用(メモリコピー 数Fアドレスへ数Gのアドレスから数Hの長さ分コピー(数Hマイナスでコピー方向が逆になる)
G 左移動COPYで使用
H 左移動COPYで使用
I FORループで使用
J 自機のラインに敵がいるかのチェックに使用
K INKEY
L 敵の速さ調整(カウント用)
M 下移動COPYで使用(メモリコピー 数Mアドレスへ数Nのアドレスから数Oの長さ分コピー(数Oマイナスでコピー方向が逆になる)
N 下移動COPYで使用
O 下移動COPYで使用
P 敵の速さ調整(面クリすると減っていく(早くなる))
Q
R
S SCORE
T 面クリフラグ 0:クリアしてない 1:クリアした
U
V 弾のスピード調整用
W 弾のX座標
X 自機、X座標
Y 弾のY座標
Z 弾発射中フラグ 0:未発射 1:発射中
2018/2/23 80行が2個あったのをこっそり修正
1 'インベーダーゲーム 10 CLV:VIDEO3:P=80:X=7 20 @H:CLS:?"SCORE:";S:A=#95F:B=A-1:C=-48:D=1:E=3:F=#930:G=F+1:H=47:M=#96F:N=M-16:O=-64:J=0:Z=0:P=P-10:T=0:FORI=0TO17:LCI%6*2,I/6+E:?CHR$(237):NEXT 30 @A:IFTLC2,4:?"C L E A R !!":WAIT120:GOTO@H 40 IFSCR((D=1)*14,E)=237||SCR((D=1)*14,E+1)=237||SCR((D=1)*14,E+2)=237GSB@D:GOTO@B 50 IFD=1GSB@RELSEGSB@L 60 @B:K=INKEY():IFKLCX,10:?" " 70 X=X-(K=28)*(X>0)+(K=29)*(X<14):LCX,10:?CHR$(240):IFK=32&&!ZY=10:W=X:Z=1 80 IF!ZGOTO@C 90 IFVGOTO@E 100 GSB@F:Y=Y-1:IF!YZ=0:GOTO@C 110 GSB@G 120 @E:V=V-1:IFV<0V=10 130 @C:L=L-1:IFL<0L=P:GOTO@A 140 GOTO@B 150 @R:GSB@F:COPYA,B,C:GSB@G:RTN 160 @L:GSB@F:COPYF,G,H:GSB@G:RTN 170 @D:GSB@F:COPYM,N,O:GSB@G:FORI=0TO14:J=J+(SCR(I,10)=237):NEXT:IFJLC0,1:?"GAME OVER":END 180 E=E+1:A=A+16:B=B+16:F=F+16:G=G+16:M=M+16:N=N+16:D=-D:IFE>7A=A-16:B=B-16:C=C+16:H=H-16:M=M-16:N=N-16:O=O+16 190 RTN 200 @F:IFZLCW,Y:?" " 210 RTN 220 @G:LCW,Y:IFZ&&SCR(W,Y)=237?CHR$(244):Z=0:S=S+10:LC0,0:?"SCORE:";S:WAIT15:LCW,Y:?" ":T=(S%180=0):RTN 230 IFZ?CHR$(242) 240 RTN
完璧にインベーダーゲームですね。弾を外してしまったときのドキドキ感も健在です。お見事です! 名古屋撃ちはやはり強力でした! 変数の役割まで公開していただいて、ありがとうございます。