SHIROのIchigoJam日記

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

通信対戦・後出しジャンケン

★この記事は「IchigoJam Advent Calendar 2020」にエントリーしています。

IchigoJam×2台をつないで、通信対戦するゲームです。
今回はIchigoDyhook+IchigoDakeを2セット用意して、ケーブルでつないで対戦してみます。
(TX-RX、RX-TX、GND-GNDと3本のケーブルでつなぎます)
f:id:shiro0922:20201212171817j:plain

遊び方

  • 2台の片方で先手用、もう片方で後手用のプログラムを実行します。先手側は「ジブンノバン」、後手側は「アイテノバン」と表示されます。

f:id:shiro0922:20201212171843j:plain
f:id:shiro0922:20201212171901j:plain

  • 先手側は、自分が出す手を「グー・チョキ・バー」の3つから選んで、数字キーの1~3のどれかを押します。

f:id:shiro0922:20201212171946j:plain

  • 後手側には、先手側の手が送られて来ます。その手を見て、それに勝つ手を3秒以内に入力してください。入力できれば「カッタ!」と表示されて自分の番になります。

f:id:shiro0922:20201212171953j:plain

  • 3秒以内に入力できなかったり、勝てない手を入力してしまったりすると、ゲームオーバーです。

f:id:shiro0922:20201212172434j:plain

  • 攻守交替して、今度は後手側が自分の手を入力して、先手側へ送信します。どちらかがゲームオーバーになるまで続けます。
    片方がゲームオーバーになっても、もう片方はプログラムが止まらないので、ESCキーでプログラムを止めてください。
    またプレイしたい時は、両方で「RUN」でプログラムを実行します。

プログラム

先手用(プログラム1)

10 '*JANKEN-1
20 UART 0:CLS
30 LET [1],"グー","チョキ","パー"
40 @LOOP
50 ?:?"---ジブン ノ バン---"
60 ?"1グー 2チョキ 3パー =?";
70 @INM
80 M=INKEY():IF !M CONT
90 M=M-48
100 IF M<1 OR M>3 GOTO @INM
110 ?STR$([M])
120 UART 9:?M:UART 0
130 ?:?"---アイテ ノ バン---"
140 @INA
150 A=INKEY():IF !A CONT
160 A=A-48
170 ?"アイテ=";STR$([A])
180 ?"1グー 2チョキ 3パー =?";
190 CLK:CLT
200 @INK
210 K=INKEY()
220 IF TICK()>180 GOTO @GOVER
230 IF !K GOTO @INK
240 K=K-48
250 IF K<1 OR K>3 GOTO @INK
260 ?STR$([K])
270 IF A=1 A=4
280 IF A-K!=1 GOTO @GOVER
290 BEEP
300 ?"カッタ!"
310 GOTO @LOOP
320 @GOVER
330 BEEP 30,30
340 ?:?:?"***ゲームオーバー***"

後手用(プログラム2)

10 '*JANKEN-2
20 UART 0:CLS
30 LET [1],"グー","チョキ","パー"
40 @LOOP
50 ?:?"---アイテ ノ バン---"
60 @INA
70 A=INKEY():IF !A CONT
80 A=A-48
90 ?"アイテ=";STR$([A])
100 ?"1グー 2チョキ 3パー =?";
110 CLK:CLT
120 @INK
130 K=INKEY()
140 IF TICK()>180 GOTO @GOVER
150 IF !K GOTO @INK
160 K=K-48
170 IF K<1 OR K>3 GOTO @INK
180 ?STR$([K])
190 IF A=1 A=4
200 IF A-K!=1 GOTO @GOVER
210 BEEP
220 ?"カッタ!"
230 ?:?"---ジブン ノ バン---"
240 ?"1グー 2チョキ 3パー =?";
250 @INM
260 M=INKEY():IF !M CONT
270 M=M-48
280 IF M<1 OR M>3 GOTO @INM
290 ?STR$([M])
300 UART 9:?M:UART 0
310 GOTO @LOOP
320 @GOVER
330 BEEP 30,30
340 ?:?:?"***ゲームオーバー***"

先手用と後手用は、手の入力や送受信の順番が違うだけで、ほぼ同じプログラムです。

中学校では2021年度から新学習指導要領が施行されて、技術科のプログラミング単元で、これまでの「計測と制御のプログラミング」に加えて「ネットワークを通じた双方向通信のプログラミング」をやることになっています。
それを受けて、数年前からIchigoJamを使った双方向通信のプログラミングを、中学校での出張授業で試しています。
その教材の1つとして「ラス1ババ抜きゲーム」を以前に作ったのですが、
www.ichigojaman.jp
実際に授業でやってみた所、中学生のウケが今一つでした。(と言うより、最後まで入力できた子が少なかった)
もうちょっとわかりやすいルールの通信対戦ゲームが欲しいと思って、ジャンケンを題材にしたプログラムを作ってみました。
いずれ中学生向けに試してみたいと思います。