※この記事は「IchigoJam Advent Calendar 2018」「Raspberry Pi Advent Calendar 2018」にエントリーしています。
以前にIchigoJamで作った、さめがめ風ゲーム「いちがめ」。
www.ichigojaman.jp
同じ種類のコマを選んで消していくのですが、さすがに処理が重くて「何とか我慢して遊べる」感じでした。
ふと、「IchigoJam RPi(ラズパイ版)で動かしたら速いんじゃ?」と思い立って、試してみました。
※IchigoJam RPiは、先日公開された最新板(1.2.6)をダウンロードして使いました。
IchigoJam BASIC RPi1.2 ダウンロード
ラズパイ版では嘘のようにコマをサクサク消せて、すごく快適に遊べます。あまりに速くてビックリしました。
ラズパイをお持ちの方は、ぜひ遊んでみてください。
遊び方
- 起動すると、16×16=256個の駒が表示されます。最初のステージ0は駒が3種類です。
- 反転しているカーソルをカーソルキーで移動して、同じ駒が縦・横に2個以上つながっている所で、スペースキーを押してください。その駒が消えて、駒が下へ詰まります。縦1列全ての駒が消えた場合は、右側の列が左へ詰まります。
- (消した駒数-2)の2乗がスコアに加算されます。駒2個だと消しても0点、駒数が増えると点数が上昇します。
- 残り駒数が駒種類数×2以下(最初は6個以下)になると、そのステージはクリアです。次のステージでは駒が1種類増えます。ステージ6(駒9種類)をクリアすると、駒は3種類に戻ります。
プログラムリスト
再掲します。以下の2つのプログラムを連続したスロットに配置して、コマ設定プログラムから起動してください。なお2回目以降のプレイでは、メインプログラムを直接RUNして構いません。
(1)コマ設定プログラム
1 '*1Game V2 Koma* (PCG) 2 CLP 3 ' 4 'Koma PCG Pattern 5 LET [ 8],#04,#3E,#2F,#56,#6A,#D6,#AC,#F0 6 LET [16],#38,#7C,#FE,#FE,#FE,#7C,#38,#00 7 LET [24],#38,#44,#82,#82,#82,#44,#38,#00 8 LET [32],#38,#44,#92,#BA,#92,#44,#38,#00 9 LET [40],#38,#74,#F2,#F2,#F2,#74,#38,#00 10 LET [48],#38,#44,#82,#FE,#82,#44,#38,#00 11 LET [56],#38,#44,#A2,#92,#8A,#44,#38,#00 12 LET [64],#38,#44,#8A,#94,#A2,#44,#38,#00 13 LET [72],#38,#44,#82,#82,#FE,#7C,#38,#00 14 ' 15 'Normal Koma(#E1-#E9) 16 FOR C=1 TO 9:FOR B=0 TO 7 17 POKE (#E0+C)*8+B,[C*8+B] 18 NEXT:NEXT 19 ' 20 'Reverse Koma(#F1-#F9) 21 FOR C=1 TO 9:FOR B=0 TO 7 22 POKE (#F0+C)*8+B,PEEK((#E0+C)*8+B)^#FF 23 NEXT:NEXT 24 ' 25 LRUN FILE()+1
(2)メインプログラム
1 '1Game V2 2 CLV:LET[91],-1,0,1,0,0,-1,0,1,0,0:J=15 3 CLS:L=256:W=J:M=S%7+3:FORY=0TOJ:FORX=0TOJ:?CHR$(#E1+RND(M));:NEXT:?:NEXT:GSB9:GSB10 4 K=INKEY()*2-60:IFABS(K)>4GOTO4 5 IFK=4GSB13:IFL<M*2BEEP9,30:WAIT60:S=S+1:GOTO3 6 GSB11:X=P+[K+95]:Y=Q+[K+96]:IFSCR(X,Y)P=X:Q=Y 7 GSB11:IF!GGOTO4 8 LC0,19:END 9 LC0,18:?"Stage ";S;" Score ";T:RTN 10 P=0:Q=J 11 X=P:Y=Q 12 I=SCR(X,Y):I=I+((I<#F0)-(I>#EF))*16:LCX,Y:?CHR$(I):RTN 13 U=P:V=Q:N=SCR(U,V)-16:C=0:[C]=U+V*16:H=1:GSB23:IF!CRTN 14 BEEP:B=0 15 B=B+1:U=[B]&15:V=[B]/16:GSB23:IFB<CGOTO15 16 I=C-1:T=T+I*I:L=L-I-2:GSB9:FORB=0TOC:X=[B]&15:FORY=JTO0STEP-1:IF#F0>SCR(X,Y)ELSEFORZ=YTO0STEP-1:POKE#900+X+Z*32,SCR(X,Z-1):NEXT:Y=Y+1 17 NEXT:NEXT:IF!LRTN 18 FORX=WTO0STEP-1:IFSCR(X,J)ELSEFORY=JTO0STEP-1:LCX,Y:FORZ=XTOW:?CHR$(SCR(Z+1,Y));:NEXT:NEXT:W=W-1 19 NEXT:C=0:H=0:FORU=0TOW:FORV=JTO0STEP-1:N=SCR(U,V):IF!NGOTO21 20 GSB23:IFCU=W:V=0 21 NEXT:NEXT:IF!CG=1 22 GSB10:RTN 23 FORD=91TO97STEP2:X=U+[D]:Y=V+[D+1]:IFSCR(X,Y)=NC=C+1:[C]=X+Y*16:IFHGSB12 24 NEXT:RTN