SHIROのIchigoJam日記

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

シリアル版リーチゲーム

※この記事は「IchigoJam Advent Calendar 2019」に参加しています。

f:id:shiro0922:20191205234532p:plain
以前作った対戦ビンゴゲームのリメイクです。画面表示をシンプルにして、IchigoKamuyなどのシリアルモニタ画面でも遊べるようにしました。もちろん通常の液晶画面でも遊べます。
プログラムも圧縮して、何とか1ファイルに収めました。

(追記)IchigoKamuyとIJUtilitiesのシリアルモニタで遊んでみました。
f:id:shiro0922:20191206230456j:plain

遊び方

  • CPUと対戦するビンゴゲームです。起動すると、5×5の自分のマス目が表示されます。CPU側のマス目は、対戦中は見られません。
  • 自分のマス目の数字を1手ずつ入力して、「--」にして消していきます。逆にCPUが選んだ数字は、自分のマス目では「●●」になります。
  • 「●●」が縦・横・斜めのどこか1列で4個揃ったら「リーチ」です。その場合は、相手はもう1回数字を消さないといけません。
  • 「●●」が縦・横・斜めのどこか1列で5個揃ったら「ビンゴ」で、そのプレイヤーの勝ちです。CPU側のマス目も表示されて終了します。
  • 消せない数字を入力すると再入力になります。また、リーチやビンゴは自動で判定されます。

f:id:shiro0922:20191205235406p:plain
容量が足りないのでCPU思考ルーチンはシンプルですが、かなり強いです。本気でかかってください。
(作者の私も、必死にプレイして勝率は五分五分です)

プログラム

1 CLV:CLS:FORG=0TO25STEP25
2 FORI=0TO24:[G+I]=I+1:NEXT
3 FORI=1TO200:A=RND(25):B=RND(25):C=[G+A]:[G+A]=[G+B]:[G+B]=C
4 NEXT:NEXT:G=0:GSB16
5 G=0:INPUT"N=?",N:GSB29:IF[A]<1CONT
6 [A]=0:GSB16
7 G=25:GSB29:[G+A]=-1:GSB19:IFQEND
8 IFRGOTO5
9 G=25:T=1:B=-1:W=20:FORA=0TO24:U=A%5:V=A/5
10 F=0:IF[G+A]>0GSB19:IFF<WW=F:B=A
11 NEXT:N=[G+B]:[G+B]=0:?"CPU=";N:T=0
12 G=0:GSB29:[A]=-1:GSB16
13 GSB19:IFQEND
14 IFRGOTO9
15 GOTO5
16 ?:I=G:FORY=0TO4:FORX=0TO4
17 IF![I]?"--";ELSEIF[I]=-1?CHR$(233,233);ELSE?DEC$([I],2);
18 ?" ";:I=I+1:NEXT:?:NEXT:?:RTN
19 R=0:Q=0:E=1:S=0:Y=V:FORX=0TO4:GSB33:NEXT:GSB24
20 E=1:S=0:X=U:FORY=0TO4:GSB33:NEXT:GSB24
21 IFU=VGSB31:GSB24
22 IFU+V=4GSB32:GSB24
23 RTN
24 F=F+S*E:IFS<4||Q||TRTN
25 BEEP:IF!G?"YOU ";ELSE?"CPU ";
26 IFS=5?"WIN!":?"(CPU)";:G=25:GSB16:Q=1:RTN
27 IF!R?"REACH!":R=1:WAIT60
28 RTN
29 FORI=0TO24:D=[G+I]:IFD=NU=I%5:V=I/5
30 NEXT:A=U+V*5:RTN
31 E=1:S=0:FORX=0TO4:Y=X:GSB33:NEXT:RTN
32 E=1:S=0:FORY=0TO4:X=4-Y:GSB33:NEXT:RTN
33 D=[G+X+Y*5]:IF!DE=0
34 S=S+(D=-1):RTN

リーチが複数重なった時に、おかしな表示になることがあります。が、もうコード容量が1Kバイト目一杯なので、これ以上直せません(^_^;)
リーチやビンゴのチェックルーチンを、CPUの思考でも共用しています。おかげでプログラムが1ファイルに収まりました。

web版

IchigoJam web版はこちら。
実行速度が遅いので、起動直後やCPUの手番で10秒くらい待たされます。