PCN三重さんが販売しているIchigoJam携帯ゲーム機「IchigoBoy」「IchigoBoy Pocket」用に作ったプログラムを、過去記事も含めてまとめてみました。
ボタン仕様
左=IN7(OUT3)(プルダウン)
右=IN6(OUT2)(プルダウン)
上=IN5(OUT1)(プルダウン)
下=IN8(OUT4)(プルダウン)
SELECT=IN3(プルアップ)
START=BTN
A=IN11(OUT6)(プルダウン)
B=IN10(OUT5)(プルダウン)
- プルダウンは、ボタンが押されると入力が1、押されていないと0
- プルアップは、ボタンが押されると入力が0、押されていないと1
プログラム
セレクター
スロット0に置いて自動起動すると良いです。スロット1~3のプログラムを選択起動できます。
数字変更=上下左右ボタン、決定=STARTボタン。
1 '*Selecter Boy 2 VIDEO3:SWITCH1:CLV:FORP=1TO6:OUTP,-1:NEXT 3 LET[0],7,5,5,5,7,4,4,4,4,4,7,4,7,1,7,7,4,7,4,7,5,5,7,4,4 4 LET[25],7,1,7,4,7,7,1,7,5,7,7,5,5,4,4,7,5,7,5,7,7,5,7,4,7 5 IFBTN()CONT 6 CLS:?" *IchigoBoy*" 7 N=1:GSB17 8 '@NLOOP 9 I=IN(6)-IN(7) 10 J=IN(5)-IN(8) 11 N=N+I+J 12 IFN<1N=3 13 IFN>3N=1 14 GSB17 15 IF!BTN()GOTO8 16 BEEP:CLS:LRUNN 17 '@PRTN 18 M=N/10:O=4:GSB20 19 M=N%10:O=8:GSB20:RTN 20 '@PRT1 21 FORY=0TO4:D=[M*5+Y]:LCO,2+Y 22 FORX=0TO2:?CHR$(D%2);:D=D/2:NEXT 23 ?CHR$(28,28,28,31);:NEXT:RTN
シューティングゲーム
左右ボタンで自機移動、AまたはBボタンでビーム発射。
敵UFOに画面下まで侵略されるとゲームオーバーです。
ゲームオーバー時は、Bボタンでリプレイ、STARTボタンでセレクターへ戻ります。
10 '*SHOOTING Boy 20 CLS:CLV 30 LOCATE 0,0 40 PRINT S 50 X=7:Y=7 60 LOCATE X,Y 70 PRINT "A"; 72 U=RND(15):V=0 74 LOCATE U,V 76 PRINT CHR$(241); 80 '*GAMELOOP 90 LOCATE X,Y 100 PRINT " "; 105 K=IN(6)-IN(7) 110 IF K=-1 AND X>0 THEN X=X-1 120 IF K=1 AND X<14 THEN X=X+1 130 LOCATE X,Y 140 PRINT "A"; 142 IF IN(10)||IN(11) GOSUB 240 145 GOSUB 160 148 WAIT 3 150 IF V<7 THEN GOTO 80 152 BEEP 30,30 153 LOCATE 0,0:PRINT S 154 LOCATE 3,3 156 PRINT "GAME OVER!" 157 IF BTN() LRUN 0 158 IF IN(10)=1 THEN RUN 159 GOTO 157 160 '*UFO 170 LOCATE U,V 180 PRINT " "; 190 U=U+RND(3)-1 192 IF U<0 THEN U=0 194 IF U>14 THEN U=14 200 V=V+RND(3)-1 202 IF V<0 THEN V=0 204 IF V>7 THEN V=7 210 LOCATE U,V 220 PRINT CHR$(241); 230 RETURN 240 '*BEAM 250 B=X 260 FOR C=Y-1 TO V STEP -1 270 LOCATE B,C 280 PRINT "|"; 285 WAIT 3 290 LOCATE B,C 300 PRINT " "; 310 NEXT 320 IF B<>U THEN RETURN 330 '*HIT 340 BEEP 350 LOCATE U,V 360 PRINT "*"; 362 S=S+10 364 LOCATE 0,0 366 PRINT S 370 WAIT 20 380 LOCATE U,V 390 PRINT " "; 395 U=RND(15):V=0 400 RETURN
ジャンプアクションゲーム
www.ichigojaman.jp
画面が狭いので、床2段・はしご2本のステージです。敵のエイリアンに当たらないように避けながら、コインを取ってください。
上下左右で移動、Aボタンでジャンプ。ゲームオーバー時はSTARTでセレクターへ戻ります。
プログラムリスト
1 'Jump Action 2 CLV:FORI=1TO6:OUTI,-1:NEXT:LET[90],15,6,-1,0,2,1 3 CLS:?0:FORJ=48TO112STEP64:FORI=0TO15:POKE#900+I+J,1:NEXT:NEXT 4 FORJ=3TO6:LC3,J:?"H":LC12,J:?"H":NEXT:X=0:Y=6:J=0 5 IFJOR(Y%4=2)U=X-IN(7)*(X>0)+IN(6)*(X<15) 6 V=Y:IFJGOTO9 7 V=Y-IN(5)*(H=72)+IN(8)*(SCR(X,Y+1)=72) 8 IFIN(11)*(Y%4=2)J=1:G=-2 9 V=V+((G>0)-(G<0))*J:G=G+J:LCX,Y:?CHR$(H);:H=SCR(U,V):IFH=36BEEP:S=S+1:LC0,0:?S:H=0 10 LCU,V:?CHR$(250);:X=U:Y=V 11 IFH=64M=1 12 IFY%4=2J=0 13 IFRND(40)=0GSB24 14 FORA=0TO5STEP5:IF[A]GSB21 15 IF(![A])*(!RND(20))GSB19 16 NEXT:WAIT6:IF!MGOTO5 17 BEEP30,30:LC4,1:?"GAME OVER":WAIT30 18 IFBTN()RUNELSECONT 19 R=RND(2)*3:[A+1]=[90+R]:[A+2]=[91+R]:[A+4]=SCR([A+1],[A+2]):IF[A+4]RTN 20 [A]=1:[A+3]=[92+R]:LC[A+1],[A+2]:?"@";:RTN 21 D=[A+1]+[A+3]:E=[A+2]:LC[A+1],[A+2]:?CHR$([A+4]);:IF(D<0)OR(D>15)[A]=0:RTN 22 [A+4]=SCR(D,E):LCD,E:?"@";:IF[A+4]=250M=1 23 [A+1]=D:[A+2]=E:RTN 24 B=RND(16):C=4*RND(2):IFSCR(B,C)GOTO24 25 LCB,C:?"$":RTN
落ち物パズルゲーム
左右ボタンでピース移動、下ボタンでピース落とし。
ゲームオーバー時は、Bボタンでリプレイ、STARTボタンでセレクターへ戻ります。
1 'Fall Boy 2 CLV:CLS:FORY=0TO8:[Y]=513:Q=[Y]:GSB22:NEXT:[9]=1023 3 LC10,0:?"SCORE":LC11,1:?"0":T=50 4 G=0:A=RND(15)+1:B=(A&3)*16:C=(A&12)*4:Y=0:IF!CGSB24 5 GSB20:IFC&[0]GOTO16 6 FORK=0TOT:IFIN(8)K=T 7 IFIN(11)GSB24:GSB20 8 J=IN(6)-IN(7):IF!JGOTO11 9 D=B<<J:E=C<<J:IF(D&[Y])OR(E&[Y+1])GOTO11 10 GSB21:B=D:C=E:GSB20 11 NEXT:V=Y+1:IF(B&[V])OR(C&[V+1])GSB26 12 IF!GGOTO15 13 IFY=0&&BGOTO16 14 GOTO4 15 GSB21:Y=V:GSB20:GOTO6 16 BEEP30,30:WAIT60 17 IFBTN()LRUN0 18 IFIN(10)RUN 19 GOTO17 20 Q=[Y]|B:GSB22:LC0,Y:Q=[Y+1]|C:GSB23:RTN 21 Q=[Y]:GSB22:LC0,Y:Q=[Y+1]:GSB23:RTN 22 IF!YRTNELSELC0,Y-1 23 FORI=0TO9:?CHR$(Q&1);:Q=Q>>1:NEXT:RTN 24 IF!BRTN 25 A=B:B=C:C=A:RTN 26 BEEP30,5:[Y]=[Y]|B:W=Y+1:[W]=[W]|C:P=1:IF[W]=1023&&W<9GSB29 ELSEW=Y 27 IF[W]=1023GSB29 28 G=1:RTN 29 BEEP:[W]=513:Q=[W]:LC0,W-1:GSB23:S=S+P:LC11,1:?S:T=T-P*2:P=P+2:IFT<0T=0 30 FORZ=WTO1STEP-1:[Z]=[Z-1]:Q=[Z]:LC0,Z-1:GSB23:NEXT:RTN
イチゴトランプ
山からカードを引いて、同じ絵柄のカードを4枚揃えた人が上がりです。
イチゴカードを引いてしまうと、手持ちのカードが山のカードと入れ替わってしまいます。
左右ボタンでカーソル移動、Aボタンで捨てるカードを決定。
ゲームオーバー時は、Bボタンでリプレイ、STARTボタンでセレクターへ戻ります。
1 CLV:CLS:LET[90],5,5,0,2,5,0,11,2 2 FORN=1TO4:FORS=235TO245:[M]=S:M=M+1:NEXT:NEXT:GSB11:FORP=0TO3:Q=51+P*5:FORT=0TO2:M=M-1:[Q+T]=[M]:[M]=0:NEXT:GSB12:NEXT:FORN=1TO3:[M]=255:M=M+1:NEXT:GSB11 3 P=(P+1)&3:Q=51+P*5:D=RND(M):[Q+3]=[D]:[D]=0:GSB12:IF[Q+3]=255GSB19 4 IF([Q]=[Q+1])&([Q]=[Q+2])&([Q]=[Q+3])GOTO7 5 C=3:IFPGSB16 ELSEGSB15 6 WAIT9:[D]=[Q+C]:FORN=CTO3:[Q+N]=[Q+N+1]:NEXT:GSB12:GOTO3 7 BEEP9,30:G=P:GSB12 8 IFBTN()LRUN0 9 IFIN(10)RUN 10 GOTO8 11 FORN=1TO100:A=RND(M):B=RND(M):D=[A]:[A]=[B]:[B]=D:NEXT:RTN 12 Z=90+P*2:X=[Z]:Y=[Z+1]:LCX,Y:IFP?"COM";PELSE?"YOU" 13 LCX,Y+1:FORE=0TO3:F=[Q+E]:IFFIFP=G?CHR$(F);ELSE?CHR$(219); 14 NEXT:?" ":RTN 15 LCX+C,Y+2:?" ";:C=C-IN(7)*(C>0)+IN(6)*(C<3):LCX+C,Y+2:?CHR$(226);:WAIT5:IFIN(11)BEEP:LCX+C,Y+2:?" ";:RTNELSECONT 16 FORE=0TO2:A=[Q+E]:FORF=E+1TO3:IF[Q+F]=A[80+E]=1:[80+F]=1 17 NEXT:NEXT:FORE=0TO2:IF![80+E]C=E 18 [80+E]=0:NEXT:RTN 19 IF!PBEEP30,9:WAIT60 20 FORC=0TO3 21 E=RND(M):F=[E]:IF(F=255)|(F=0)GOTO21 22 [E]=[Q+C]:[Q+C]=F:NEXT:GSB12:RTN
いちがめ
www.ichigojaman.jp
さめがめ風のコマを消していくゲームです。
- プログラムは初期化プログラムとメインプログラムの2つです。連続したスロットに置いて、初期化プログラムから起動してください。
- 起動すると、画面左に11×8に並んだコマ、画面右にレベル(0~)とスコアが表示されます。
- 反転カーソルを上下左右ボタンで移動して、Aボタンでコマを消します。同じ種類が上下左右に2個以上つながっているコマだけを消すことができます。たくさんのコマを一度に消すと、スコアが上がります。コマを消すと、残りのコマが下あるいは左へ移動して詰まります。
- 残りのコマ数がある程度以下になると、そのレベルはクリアです。次のレベルへ進み、コマが1種類増えます。
- クリアする前に手詰まりになるとゲームオーバーです。Bボタンを押すと最初からリプレイします。STARTボタンを押すとセレクターへ戻ります。
●初期化プログラム
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 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