昔のアーケードゲームを思い出しながら作ったブロックくずしです。
以前にプチコンでも作ったのですが、IchigoJamでさらに「簡素」になっています。
- パドルはカーソルキーの左右で動かしてください。ボールの2倍の速さで動くので、後からでも何とか追いつけます。
- アイテムなどは何も出ません。ひたすらボールを打ち返してブロックを消してください。
- 向こう側の壁にボールが当たると、パドルの長さが短くなります。
- ボールは3個あります。3回ミスするとゲームオーバーです。
- 2面クリアしても終わりません。ずっと続きます。
- ときどきボールがブロックを突き抜けるような動きをしますが、昔のアーケード版にならった仕様です(^_^)
プログラムリスト(Program List)
容量節約のために圧縮された見づらいリストですが、ご容赦ください。
1 '*K.Block 2 CLV:B=3:POKE#700,0,127,127,127,127,127,127,0,0,254,254,254,254,254,254,0 3 CLS:X=5:Y=10:D=1:E=1:C=#E9:GSB15:P=15:W=5:GSB20 4 LC1,23:?"SCORE ";S;:LC20,23:IFB>1FORI=1TOB-1:?CHR$(C);:NEXT 5 FORJ=0TO21:LC1,J:?CHR$(1):LC30,J:?CHR$(1):NEXT:GSB16 6 U=X+D:V=Y+E:IFV>-1ELSEV=RND(3)/2:E=1:R=0:IFW=5W=3:P=P+1:GSB20:GOTO6 ELSEGOTO6 7 WAIT2:IFSCR(U,V)<>1GOTO12 8 IFU<2BEEP20:D=1:GOTO6 9 IFU>29BEEP20:D=-1:GOTO6 10 BEEP30:E=-1:D=(U-P>W/2)*2-1:R=0:IF!LO=0:GSB16 11 GOTO6 12 GSB19:GSB15:IF2<VANDV<7AND!RGSB17 13 X=U:Y=V:GSB15:GSB19:IFY<22GOTO6 14 BEEP30,60:WAIT60:B=B-1:IFB>0O=1:GOTO3 ELSELC0,0:END 15 A=#900+X+Y*32:POKEA,C^PEEK(A):RTN 16 L=0:FORJ=0TO3:LC2,J+3:FORI=0TO13:A=I+J*14:[A]=[A]*O:?CHR$(#E0*![A],#E1*![A]);:L=L+![A]:NEXT:NEXT:RTN 17 I=(U-2)/2:J=V-3:A=I+J*14:IF[A]RTN 18 BEEP10:[A]=1:LCI*2+2,V:?CHR$(0,0);:R=1:E=-E:S=S+1:LC7,23:?S;:L=L-1:RTN 19 Q=P-BTN(LEFT)*(P>1)+BTN(RIGHT)*(P<30-W):IFQ=PWAIT1:RTNELSEP=Q 20 LCP-1,22:?CHR$(0);:FORI=0TOW:?CHR$(1);:NEXT:?CHR$(0);:RTN
デモバージョン(Demo Version)
IchigoJamの展示などで使うことを想定したデモバージョンです。
- デモ用なのでキー操作はできません。見るだけです。
- スロット0に保存して、電源ONで自動実行するようにするといいでしょう。
- 永久ループにならないように、乱数処理を入れています。そのため毎回違うパターンになります。
1 '*K.Block demo 2 CLV:POKE#700,0,127,127,127,127,127,127,0,0,254,254,254,254,254,254,0 3 CLS:X=6:Y=9:D=1:E=1:C=#E9:GSB14:P=2 4 LC1,23:?"SCORE ";S; 5 FORJ=0TO21:LC1,J:?CHR$(1):LC30,J:?CHR$(1):NEXT:GSB15 6 WAIT3:U=X+D:V=Y+E:IFV>-1ELSEV=RND(3)/2:E=1:R=0 7 IFSCR(U,V)<>1GOTO12 8 IFU<2BEEP20:D=1:GOTO6 9 IFU>29BEEP20:D=-1:GOTO6 10 BEEP10:E=-1:D=RND(2)*2-1:R=0:IF!LGSB15 11 GOTO6 12 GSB18:GSB14:IF2<VANDV<7AND!RGSB16 13 X=U:Y=V:GSB14:GOTO6 14 A=#900+X+Y*32:POKEA,C^PEEK(A):RTN 15 L=56:FORJ=0TO3:LC2,J+3:FORI=0TO13:A=I+J*14:[A]=0:?CHR$(#E0,#E1);:NEXT:NEXT:T=ANA(2)/2:FORI=0TOT:Z=RND(10):NEXT:RTN 16 I=(U-2)/2:J=V-3:A=I+J*14:IF[A]RTN 17 BEEP30:[A]=1:LCI*2+2,V:?CHR$(0,0);:R=1:E=-E:S=S+1:LC7,23:?S;:L=L-1:RTN 18 P=X-2:IFP<1THENP=1ELSEIFP>25THENP=25 19 LCP-1,22:?CHR$(0,1,1,1,1,1,1,0);:RTN
ボリュームVersion
IchigoJamのVCC・GND・BTN端子に、VR(ボリューム)を付けて操作してください。
0.65mm径の単芯線をはんだ付けすると、IchigoJamのソケットに直接差せるのでお勧めです。
昔のアーケードのブロックくずしを思い出して、なかなか楽しいです。
なお、パドル移動を高速化するために、「向こう側の壁にボールが当たるとパドルが短くなる」というルールを無くしました。
また、ファームウェア1.0.2b9で実装された、文字コードでカーソルを移動する機能も使って、高速化を図っています。
1 CLV:B=3:A=#700:POKEA,0:POKEA+7,0:FORI=1TO6:POKEA+I,127:POKEA+8+I,254:NEXT:POKEA+8,0:POKEA+15,0 2 CLS:X=5:Y=10:D=1:E=1:C=#E9:GOSUB13:P=15:GOSUB17 3 LC1,23:?"SCORE ";S;:LC20,23:IFB>1FORI=1TOB-1:?CHR$(C);:NEXT 4 FORJ=0TO21:LC1,J:?CHR$(1):LC30,J:?CHR$(1):NEXT:GOSUB14 5 U=X+D:V=Y+E:IFV>-1ELSEV=RND(2):E=1:R=0:GOTO5 6 IFPEEK(#900+U+V*32)<>1GOTO10 7 IFU<2ORU>29BEEP20:D=(U<2)*2-1:GOTO5 8 BEEP10:E=-1:D=(U-P>2)*2-1:R=0:IF!LO=0:GOSUB14 9 GOTO5 10 GOSUB17:GOSUB13:IF2<VANDV<7AND!RGOSUB15 11 X=U:Y=V:GOSUB13:GOSUB17:IFY<22GOTO5 12 BEEP30,60:WAIT60:B=B-1:IFB>0O=1:GOTO2ELSELC0,23:END 13 A=#900+X+Y*32:POKEA,C^PEEK(A):RETURN 14 L=0:FORJ=0TO3:LC2,J+3:FORI=0TO13:A=I+J*14:[A]=[A]*O:?CHR$(#E0*![A],#E1*![A]);:L=L+![A]:NEXT:NEXT:RETURN 15 I=(U-2)/2:J=V-3:A=I+J*14:IF[A]RETURN 16 BEEP30:[A]=1:LCI*2+2,V:?CHR$(0,0);:R=1:E=-E:S=S+1:LC7,23:?S;:L=L-1:RETURN 17 ?CHR$(21,P+32,54,0,0,0,0,0,0):P=24*ANA()/1023+1:?CHR$(21,P+32,54,1,1,1,1,1,1):RETURN
これらのプログラムはCC BYライセンスとします。どうぞご利用ください。
This Programs can use on CC BY license.
(C)2018 Shiro Saito (http://d.hatena.ne.jp/shiro0922/)