SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

簡素ブロックくずし(Simple Breakout)

昔のアーケードゲームを思い出しながら作ったブロックくずしです。
以前にプチコンでも作ったのですが、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/)