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

2019/07/28 15:36:45

MixJuice GET URL : kidspod.club/mj/882

OCTOPUS 深海からの侵略者

やつらは深海からやってきた。昆布を撒きながら迫り来る蛸を迎撃せよ!

プログラムをみる から 動画にリンクしています。
PCで表示できない文字は ~16進数 に置換してあります。

←→で移動 スペースでスタート 発射 再スタートです。

画面をCOPYで分割スクロールさせることでキャラクタを動かしています。
ゲームバランスは適当に調整してみてください。

BASIC ver1.3以降、動作が高速になったので実現できました。
全てのキャラクタを一つ一つ処理するには速度が足りませんので
蛸のいる段を左右に1byteずつCOPY
昆布が振ってくる段+自機の段を下向きにCOPY
自機の座標・自弾の座標に蛸・昆布が表示されていないかSCRで判定します。
自弾は表示して WAIT Pの後にすぐに消してしまいます。少し見にくい。
COPYで移動した先で消すにはメモリが足りません。

EEPROMを使ってプログラムをさらに分割すれば……
画面上部を横切る 未確認遊泳物体 を追加できるかも。

SOURCE CODE

NEW
10 'OCT1
20 @LP:T=T+1:IFT>A/2-Z+2T=0
30 IFT%2=0GSB@SHIP
40 GSB@MI
50 LRUN2
60 GOTO@LP
70 @SHIP
80 IFBTN(29)X=X+(X<14)
90 IFBTN(28)X=X-(X>1)
100 LCX-1,10:?" ~F0 ";
110 LC0,11:?"SCORE:";G;"00";
120 RTN
130 @MI
140 IF!BTN(32)S=0
150 IF(S=0)*(V<0)*BTN(32)BEEP2,3:S=1:V=10:W=X
160 IFV<0WAITP:RTN
170 V=V-1
180 IFSCR(W,V)=237GSB@H:V=-1:A=A-1:G=G+1
190 IFSCR(W,V)=242GSB@M:V=-1
200 IFA=0GSB@CL:Z=Z-(Z>0):LRUN0
210 LCW,V:?"|";:WAITP
220 LCW,V:?CHR$(0);
230 RTN
240 @H:LCW,V:?"~F4";
250 FORI=2TO5:BEEPI,2:WAIT2:NEXT
260 LCW,V:?CHR$(0);:RTN
270 @M:LCW,V:?"~F4";
280 FORI=2TO3:BEEPI,1:WAIT1:NEXT
290 LCW,V:?CHR$(0);:RTN
300 @CL:FORI=10TO5STEP-1:BEEPI,2:WAIT3:NEXT:RTN
SAVE0

NEW
10 'OCT1
20 @LP:T=T+1:IFT>A/2-Z+2T=0
30 IFT%2=0GSB@SHIP
40 GSB@MI
50 LRUN2
60 GOTO@LP
70 @SHIP
80 IFBTN(29)X=X+(X<14)
90 IFBTN(28)X=X-(X>1)
100 LCX-1,10:?" ~F0 ";
110 LC0,11:?"SCORE:";G;"00";
120 RTN
130 @MI
140 IF!BTN(32)S=0
150 IF(S=0)*(V<0)*BTN(32)BEEP2,3:S=1:V=10:W=X
160 IFV<0WAITP:RTN
170 V=V-1
180 IFSCR(W,V)=237GSB@H:V=-1:A=A-1:G=G+1
190 IFSCR(W,V)=242GSB@M:V=-1
200 IFA=0GSB@CL:Z=Z-(Z>0):LRUN0
210 LCW,V:?"|";:WAITP
220 LCW,V:?CHR$(0);
230 RTN
240 @H:LCW,V:?"~F4";
250 FORI=2TO5:BEEPI,2:WAIT2:NEXT
260 LCW,V:?CHR$(0);:RTN
270 @M:LCW,V:?"~F4";
280 FORI=2TO3:BEEPI,1:WAIT1:NEXT
290 LCW,V:?CHR$(0);:RTN
300 @CL:FORI=10TO5STEP-1:BEEPI,2:WAIT3:NEXT:RTN
SAVE1

NEW
10 'OCT2
20 IFT=0GSB@IV
30 IFT%3=0GSB@EM
40 LRUN1
50 @IV
60 O=O+1:IFO>3O=0
70 IFO%2=0POKE#76A,#FF,#DB,#7E,#42,#24:ELSEPOKE#76A,#DB,#FF,#7E,#24,#E7
80 IFO=0PLAY">C32"
90 IFO=1PLAY">>B32"
100 IFO=2PLAY">>A#32"
110 IFO=3PLAY">>A32"
120 H=#900+Y*16
130 C=0:FORI=0TOD:C=C+(PEEK(H+I*16+15-M*15)=237):NEXT
140 IFC>0GOTO@DOWN
150 E=D*16
160 IFM=0COPYH+E-1,H+E-2,-E+1:POKEH,0
170 IFM=1COPYH,H+1,E:POKEH+E-1,0
180 RTN
190 @DOWN
200 C=0:FORI=0TO15
210 C=C+(SCR(I,Y+D-1)=237)
220 NEXT
230 IFC=0D=D-1:GOTO@DOWN
240 M=(M=0):E=D*16
250 COPYH+E+15,H+E-1,-E
260 FORI=0TO15:POKEH+I,0:NEXT
270 Y=Y+1
280 IFY+D<=10RTN
290 @GO:LRUN3
300 @EM
310 COPY#9AF,#9AF-16,-16*(10-Y-D)
320 IFSCR(W,V)=242LCW,V:?CHR$(0);:V=-1:GSB@M
330 IFSCR(X,10)=242GOTO@GO
340 LCX,10:?"~F0";
350 LC0,Y+D:FORI=0TO15:?CHR$(0);:NEXT
360 FORI=0TO15:FORJ=YTOY+D-1
370 @NX:IFSCR(I,J)=237IF(RND(A+10)=0)LCI,Y+D:?"~F2";:J=Y+D
380 NEXT:NEXT
390 RTN
400 @M:FORI=2TO3:BEEPI,1:WAIT1:NEXT:RTN
SAVE2

NEW
10 'OCT3
20 LCX-1,8:?" ~F4 ";
30 LCX-1,9:?"~F4~F4~F4";
40 LCX-1,10:?"~F4~F4~F4";
50 FORI=0TO10
60 VIDEO4:BEEP50,2:WAIT3
70 VIDEO3:BEEP70,2:WAIT3
80 NEXT
90 LC3,4:?"GAME OVER"
100 IF!BTN(32)CONT
110 IFBTN(32)CONT
120 G=0:Z=0:LRUN0,40
SAVE3

LRUN0

COMMENT