SHIROのIchigoJam日記

IchigoJamの電子工作とプログラミングをメインに

いちがめV2

古典的な「さめがめ」風ゲームのバージョン2です。
※バージョン1はこちら
「駒設定プログラム」と「メインプログラム」の2分割にして、駒を入れ替えられるようにしました。
短縮形GSB/RTNを使っているので、ファームウェア1.1.0b2以降でないと動きません。

●駒設定プログラムをスロット0、メインプログラムをスロット1にSAVEして、LRUN0で実行してください。スロット番号が連続していれば、違う番号でも構いません。なお2回目以降のプレイでは、メインプログラムを直接RUNして構いません。
●起動すると、16×16=256個の駒が表示されます。最初のステージ0は駒が3種類です。
●反転しているカーソルをカーソルキーで移動して、同じ駒が縦・横に2個以上つながっている所で、スペースキーを押してください。その駒が消えて、駒が下へ詰まります。縦1列全ての駒が消えた場合は、右側の列が左へ詰まります。
●(消した駒数-2)の2乗がスコアに加算されます。駒2個だと消しても0点、駒数が増えると点数が上昇します。
●残り駒数が駒種類数×2以下(最初は6個以下)になると、そのステージはクリアです。次のステージでは駒が1種類増えます。ステージ6(駒9種類)をクリアすると、駒は3種類に戻ります。
●消せる駒が無くなると、自動的にゲームオーバーになります。
●駒設定プログラムを書き換え/差し替えすると、駒のキャラをカスタマイズできます。駒1〜9の9種類を設定してください。通常の数字版、内部キャラ版、オリジナルPCG版の3種類のサンプルをUPします。

※9/2 メインプログラムのバグ修正、PCGのパターン変更

【スロット0】駒設定プログラム(通常の数字版)

1 '*1Game V2 Koma* (Number 1-9)
2 CLP
3 '
4 'Koma Code
5 LET [1],49,50,51,52,53,54,55,56,57
6 '
7 'Normal Koma(#E1-#E9)
8 FOR C=1 TO 9:FOR B=0 TO 7
9 POKE (#E0+C)*8+B,PEEK([C]*8+B)
10 NEXT:NEXT
11 '
12 'Reverse Koma(#F1-#F9)
13 FOR C=1 TO 9:FOR B=0 TO 7
14 POKE (#F0+C)*8+B,PEEK((#E0+C)*8+B)^#FF
15 NEXT:NEXT
16 '
17 LRUN FILE()+1

【スロット1】メインプログラム

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#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:IFBSCR(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

【スロット0】駒設定プログラム(内蔵キャラ版)

1 '*1Game V2 Koma* (Internal Chr.)
2 CLP
3 '
4 'Koma Code
5 LET [1],255,232,238,228,229,230,231,235,250
6 '
7 'Normal Koma(#E1-#E9)
8 FOR C=1 TO 9:FOR B=0 TO 7
9 POKE (#E0+C)*8+B,PEEK([C]*8+B)
10 NEXT:NEXT
11 '
12 'Reverse Koma(#F1-#F9)
13 FOR C=1 TO 9:FOR B=0 TO 7
14 POKE (#F0+C)*8+B,PEEK((#E0+C)*8+B)^#FF
15 NEXT:NEXT
16 '
17 LRUN FILE()+1

【スロット0】駒設定プログラム(PCG版)

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