SHIROのIchigoJam日記

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

ラス1ババ抜きゲーム

IchigoJamとMixJuice×2台で通信対戦するババ抜きゲームです。ラスト1枚だけの勝負です(^_^)
MixJuiceで相互通信する簡単なプログラミング教材を想定して作ってみました。

※MixJuiceでのサーバー・クライアント通信設定は、こちらの記事を参照してください。
www.ichigojaman.jp
2台のIchigoJamをTX・RXでつないでシリアル通信でも遊べます。

f:id:shiro0922:20201026144524j:plain

f:id:shiro0922:20201026144444j:plain

遊び方

  • スタート時はサーバー側が「1」のカード、クライアント側が「1」「J」(ジョーカー)の2枚のカードを持っています。
  • サーバー側が先手で、「?」と表示されます。クライアント側の左のカードを引くか、右のカードを引くかを、カーソルキーの左か右を押して選びます。手持ちと同じ「1」のカードを引けば勝ち、ジョーカーを引くと上がれず、クライアント側のターンへ移ります。
  • 今度はクライアント側のターンで、「?」と表示されます。サーバー側の左のカードを引くか、右のカードを引くかを、カーソルキーの左か右で選びます。「1」のカードを引ければ勝ち、ジョーカーを引くと攻守交代です。
  • どちらかのプレイヤーが「1」を引いたら終了します。勝ったプレイヤーは「WIN」、負けたプレイヤーは「LOSE」と表示されます。

※MixJuiceのサーバー→クライアントへのTCP通信が遅いため、一手に5秒ほど待たされることがあります。
f:id:shiro0922:20201026144602j:plain

プログラム

サーバー側(先手)

10 '*BABA1 SERVER
20 CLV:VIDEO 3:UART 0,0
30 @YOU
40 CLS:BEEP:?"1":?
50 ?"?";:CLK
60 K=INKEY():IF K<28 OR K>29 CONT
70 BEEP
80 IF K=28 ?"LEFT"
90 IF K=29 ?"RIGHT"
100 UART 9:?CHR$(K):UART 0,1
110 C=INKEY():IF !C OR C=256 CONT
120 LC 1:?CHR$(C):UART 0,0
130 IF C=49 GOTO @GEND
140 @OPP
150 CLS:BEEP
160 IF RND(2) ?"1J" ELSE ?"J1"
170 ?:?"WAITING...":CLK:UART 0,1
180 K=INKEY():IF K<28 OR K>29 CONT
190 IF K=28 ?"LEFT"
200 IF K=29 ?"RIGHT"
210 C=SCR(K-28,0)
220 UART 9,0:?CHR$(C):UART 0
230 LC K-28:?CHR$(127)
240 WAIT 300:IF C!=49 GOTO @YOU
250 BEEP 30,30
260 LC 0,4:?"***LOSE!***"
270 END
280 @GEND
290 BEEP 10,30
300 LC 0,4:?"***WIN!***"

240行の「WAIT 300」は、MixJuiceのサーバー→クライアントへのTCP通信が遅いため、時間待ちとして入れています。IchigoJam×2台をシリアル接続する時は「WAIT 300」を削除してください。

クライアント側(後手)

10 '*BABA1 CLIENT
20 CLV:VIDEO 3:UART 0,0
30 @OPP
40 CLS:BEEP
50 IF RND(2) ?"1J" ELSE ?"J1"
60 ?:?"WAITING...":CLK:UART 0,1
70 K=INKEY():IF K<28 OR K>29 CONT
80 IF K=28 ?"LEFT"
90 IF K=29 ?"RIGHT"
100 C=SCR(K-28,0)
110 UART 9,0:?CHR$(C):UART 0
120 LC K-28:?CHR$(127)
130 IF C=49 GOTO @GEND
140 @YOU
150 CLS:BEEP:?"1":?
160 ?"?";:CLK
170 K=INKEY():IF K<28 OR K>29 CONT
180 BEEP
190 IF K=28 ?"LEFT"
200 IF K=29 ?"RIGHT"
210 UART 9:?CHR$(K):UART 0,1
220 C=INKEY():IF !C OR C=256 CONT
230 LC 1:?CHR$(C):UART 0,0
240 IF C!=49 GOTO @OPP
250 BEEP 10,30
260 LC 0,4:?"***WIN!***"
270 END
280 @GEND
290 BEEP 30,30
300 LC 0,4:?"***LOSE!***"

十勇士パソコンクラブのサイトで、このプログラムを含むプログラミングテキストを公開しています。
www.white.umic.jp