SHIROのIchigoJam日記

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

いちがめBoy

以前に作ったさめがめ風ゲーム「いちがめ」を、PCN三重(チーム伊勢)さん開発のIchigoBoy用に移植しました。
Maker FaireなどでIchigoBoyをゲットして、夏休みに遊んでいる人が多いようなので、試してみてください(^_^)

遊び方

  • プログラムは初期化プログラムとメインプログラムの2つです。連続したスロットに置いて、初期化プログラムから起動してください。
  • 起動すると、画面左に11×8に並んだコマ、画面右にレベル(0〜)とスコアが表示されます。
  • 反転カーソルを上下左右ボタンで移動して、Aボタンでコマを消します。同じ種類が上下左右に2個以上つながっているコマだけを消すことができます。たくさんのコマを一度に消すと、スコアが上がります。コマを消すと、残りのコマが下あるいは左へ移動して詰まります。
  • 残りのコマ数がある程度以下になると、そのレベルはクリアです。次のレベルへ進み、コマが1種類増えます。
  • クリアする前に手詰まりになるとゲームオーバーです。Bボタンを押すと最初からリプレイします。START(BTN)ボタンを押すとスロット0のプログラム(メニュー)へ戻ります。

最初のレベル0はコマが3種類しか無いので簡単ですが、次のレベル1からかなり難しくなります。レベル2になると本当になかなかクリアできません。

プログラム

プログラム0(初期化プログラム)
1 '*1GameBoy-Ini
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 CLV:FOR P=1 TO 6:OUT P,-1:NEXT
26 LET [91],-1,0,1,0,0,-1,0,1,0,0
27 J=10:K=7:SRND TICK()+ANA(2)
28 LRUN FILE()+1
プログラム1(メインプログラム)
1 G=0:L=(J+1)*(K+1):W=J:M=S%7+3
2 CLS:FORY=0TOK:LC0,Y:FORX=0TOJ:?CHR$(#E1+RND(M));:NEXT:NEXT:GSB11:GSB12
3 E=IN(6)-IN(7):F=IN(8)-IN(5)
4 IFIN(11)GSB15:IFL<M*2BEEP9,30:WAIT60:S=S+1:GOTO1
5 GSB13:X=P+E:Y=Q+F:IFSCR(X,Y)P=X:Q=Y
6 WAIT1:GSB13:WAIT3:IF!GGOTO3
7 BEEP30,30
8 IFIN(10)LRUNFILE()-1
9 IFBTN()LRUN0
10 GOTO8
11 LC12,0:?S:LC12,1:?T:RTN
12 P=0:Q=K
13 X=P:Y=Q
14 I=SCR(X,Y):I=I+((I<#F0)-(I>#EF))*16:LCX,Y:?CHR$(I);:RTN
15 U=P:V=Q:N=SCR(U,V)-16:C=0:[C]=U+V*16:H=1:GSB25:IF!CRTN
16 BEEP:B=0
17 B=B+1:U=[B]&15:V=[B]/16:GSB25:IFB<CGOTO17
18 I=C-1:T=T+I*I:L=L-I-2:GSB11:FORB=0TOC:X=[B]&15:FORY=KTO0STEP-1:IF#F0>SCR(X,Y)ELSEFORZ=YTO0STEP-1:POKE#900+X+Z*16,SCR(X,Z-1):NEXT:Y=Y+1
19 NEXT:NEXT:IF!LRTN
20 FORX=WTO0STEP-1:IFSCR(X,K)ELSEFORY=KTO0STEP-1:LCX,Y:FORZ=XTOW:?CHR$(SCR(Z+1,Y));:NEXT:NEXT:W=W-1
21 NEXT:C=0:H=0:FORU=0TOW:FORV=KTO0STEP-1:N=SCR(U,V):IF!NGOTO23
22 GSB25:IFCU=W:V=0
23 NEXT:NEXT:IF!CG=1
24 GSB12:RTN
25 FORD=91TO97STEP2:X=U+[D]:Y=V+[D+1]:IFSCR(X,Y)=NC=C+1:[C]=X+Y*16:IFHGSB14
26 NEXT:RTN