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

2020/09/21 13:55:35

MixJuice GET URL : kidspod.club/mj/1014

ダンバリアン

 DANMAKU!第3弾「ダンバリアン」です。
 3画面連続切替表示を使い、自機弾、敵弾とも大盛りのシューティングゲームにしました。
 バリアを使いこなして高得点を狙ってください。敵を撃墜するごとに攻撃が激しくなっていきます。

 自機の弾は自動連射です。敵の下部が開いているときに弾を当てると撃墜できます。
 敵の攻撃はゆっくりの「エネルギー弾」と、速い「ミサイル」の2種類です。
 自機はバリアをはることができます。バリアはエネルギー弾を防ぎますが、ミサイルは防げません。バリア使用中は自機の攻撃が止まります。
 敵を撃墜すると四角いパワーユニットを落とします。パワーユニットを一定数取ると自機の攻撃がパワーアップします(最大5段階)。またパワーユニットを20個取るごとに自機の残数が増えます。
 画面上部のSがスコア、Lが自機残数です。ゲーム開始時の自機残数は2です。
 自機が全て破壊されるとゲームオーバーです。再ゲームはエンターキーです。
 IchigoJam BASICスゲーって感じが味わえる(?)と思いますので、プレイしてみてください。

操作方法
 左右キー:自機移動
 スペースキー:バリア(押し続けている間有効)

 3画面連続切替表示だと画面ショットが取れないので、投稿した画面画像はイメージです。
 IchigoJam BASIC 1.2.3以降で動作しますが、1.2.3で動かすときはスピードを速くするために、10行のQ=-99を「Q=0」にしてください。

  • 1
  • 1

SOURCE CODE

5 'DB
10 CLV:C=#800:D=#900:H=#92:J=#9D0:X=7:M=1:Q=-99
20 VIDEO1:CLS:VIDEO3
30 Z=RND(12)+2:V=0:N=-1:U=Z
40 R=RND(20-Y/2)*!!V*(Z<>X):IF (V<7)*!R POKE#A90+U,#E9
50 IF (V<3)*!R POKEJ+U,7
60 IF !RND(2+V*3) GOTO100
70 IF !((Z+M)%15)+!RND(15) M=-M
80 IF !V+!RND(9)+!RND(10-V)*(N=1) N=-N
90 Z=Z+M:V=V+N:U=Z+V*16
100 COPY#A80,#A70,-176:COPY#B30+16*!T,#B30,-176:T=(T+1)%2
110 COPYD,C,192:COPYC,#820,176
120 WAITQ:IF PEEK(C+U)=H AND N=-1 FORI=0TO30:BEEPI+1:POKEC+Z-2+RND(5)+I/4*16,#F4,0,#F4:NEXT:POKEJ+U,#F:Y=Y+1:GOTO30
130 COPYD,#A80,192:POKEJ+1+RND(14),58
140 E=(L>5)*H:F=L>9:G=(L>16)*H:IF BTN(32) POKE#B1F+X+16,#C,#C,#C:BEEP1 ELSE POKE#88E+X,G,#12*F,H*(L>0),#17*F,G:POKE#89F+X,E,H,E
150 X=X-BTN(28)*(X>1)+BTN(29)*(X<14):S=PEEK(#A70+X):POKE#A70+X,#F0
160 WAITQ:P=N=1:COPYD+16,J,176:POKE#8FF+U,#8E,#EB,#8D:POKE#90F+U,#9C+P,#13,#9D-P
170 LC8,0:?"S";Y;"0 L";2-W:BEEPV*6-Q
180 WAITQ:IF S=15 BEEP2:L=L+1:W=W-!(L%20)
190 IF S<>7 AND PEEK(#B30+X)<#D GOTO40
200 BEEP190,50:VIDEO4:WAIT90:W=W+1:IF W<3 GOTO20
210 LC4,5:INPUT"GameOver",K:RUN

COMMENT

Kidspod運営チーム
Kidspod運営チーム2020/09/24 09:46:39

完全にパソコンとかアプリで遊ぶレベルのシューティングゲームになっていて驚きです。たった1KBでここまで作れるんですね……。ファミコンのスーパーマリオの容量が40KBしかない、ということを思い出しました。