Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2018/10/10 23:42:24

MixJuice GET URL : kidspod.club/mj/647

DANMAKU2!

DANMAKU!の第2弾です。
敵を撃ちまくってください。
敵を倒すとエネルギーパック(四角)を落とします。
これをいくつか取ると自機の弾がパワーアップします(6段階)。

敵の撃つ弾は、遅い弾と速い弾の2種類があります。
自機のパワーアップと倒した敵の数に応じて、敵の攻撃は激しさを増します。

操作は左右キーとスペースキーです。
最初の自機の弾は前作と同様に(?)当たりにくいですが、パワーアップすると当たりやすくなります。
自機が3回やられると、ゲームオーバーです。
再ゲームはエンターキーです。

このプログラムはメモリ上の3か所を画面表示用に割り当て、これを次々と表示する方式で作りました。
ちなみに、この3か所は以下の場所です。それぞれをcopy命令でスクロールさせています。
・#800~:自機弾
・#9C0~:速い敵弾、星
・#A80~:遅い敵弾

この3画面の表示タイミングを調整するために、わざとムダな処理をしたり処理の順序を入れ替えたりしています。そのため、プログラムはきたないです。

3枚の画面の残像を重ねて見せているような感じなので、IchigoJamWebなどで画面ショットが取れません。
1枚目の写真は、自作グリーンモニタ(液晶画面に暗記用の緑シートとスマホ用偏光シートを貼っただけ)です。
写真でもうまく写らないので、実際にプレイしてみてもらえるとうれしいです。

(10/12 被弾しても自機パワーアップがリセットされないようにしました。やっぱりパワーダウンすると残念ですから。)
(10/13 エネルギーパックを20個取るごとに自機数が増えるようにしました。)

  • 1
  • 2
  • 1
  • 2

SOURCE CODE

5 'DM2
10 CLV:C=#900:D=192:E=#800:F=#9C0:G=#A80:H=176:J=#92:W=3:X=8
20 VIDEO1:CLS:VIDEO3
30 V=0:Z=RND(13)+2:M=1:N=1:U=Z:R=0
40 IF (V<5)*(R=0ORZ=X) POKE16+G+U,#E9
50 IF (V<2)*(R<3ORZ=X) POKE16+F+U,7
60 BEEP200-L*15,2:R=RND(38-L-Y/3):COPYF+D,F+H,-H-1:COPYG+H+16*(T=2),G+H,-H:T=(T+1)*(T<2):COPYE,E+32,H
70 P=#89F+X:Q=(L>4):I=(L>9):IF K=32 POKEP-17,J*I,#12*Q,J*(L%5>2),#17*Q,J*I:POKEP,J*Q,J,J*Q
80 COPYC,E,D:IF (Z+M)%15=0 OR RND(15)=0 M=-M
90 IF (V+N+1)%10=0 OR V>0 AND RND(9)=0 N=-N
100 IF RND(10-V)=0 AND V>2 N=-1
110 COPYC,G,D:Z=Z+M:V=V+N:U=Z+V*16:S=PEEK(E+U):POKE#9D1+RND(14),58
120 IF S=J FORI=1TO9:Q=Z-4+RND(9)+I*16:POKEE+Q,#F4,#F4:POKEC+Q,4,3:BEEP12*I%2+I:NEXT:POKEF+U+16,#F:POKE32+G+Z,#E9:Y=Y+1:GOTO30
130 K=INKEY():X=X-(K=28ORBTN(28))*(X>1)+(K=29ORBTN(29))*(X<14):CLK
140 S=PEEK(F+H+X):Q=PEEK(G+H+X):POKEF+H+X,#F0:COPYC,F,D:POKEC+U-1,#9D,#EB,#9C
150 IF S=#F BEEP2:L=L+(L<13):O=O+1:W=W+(O%20=0)
160 IF S<>7 AND Q=0 GOTO40
170 W=W-1:BEEP150,30:VIDEO4:WAIT35:IF W>0 GOTO20
180 LC5,4:?"SC:";Y:IF INKEY()=10 RUN ELSE CONT

COMMENT