★この記事は「IchigoJam Advent Calendar 2020」にエントリーしています。
IchigoJam×2台をつないで、通信対戦するゲームです。
今回はIchigoDyhook+IchigoDakeを2セット用意して、ケーブルでつないで対戦してみます。
(TX-RX、RX-TX、GND-GNDと3本のケーブルでつなぎます)
遊び方
- 2台の片方で先手用、もう片方で後手用のプログラムを実行します。先手側は「ジブンノバン」、後手側は「アイテノバン」と表示されます。
- 先手側は、自分が出す手を「グー・チョキ・バー」の3つから選んで、数字キーの1~3のどれかを押します。
- 後手側には、先手側の手が送られて来ます。その手を見て、それに勝つ手を3秒以内に入力してください。入力できれば「カッタ!」と表示されて自分の番になります。
- 3秒以内に入力できなかったり、勝てない手を入力してしまったりすると、ゲームオーバーです。
- 攻守交替して、今度は後手側が自分の手を入力して、先手側へ送信します。どちらかがゲームオーバーになるまで続けます。
片方がゲームオーバーになっても、もう片方はプログラムが止まらないので、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
実際に授業でやってみた所、中学生のウケが今一つでした。(と言うより、最後まで入力できた子が少なかった)
もうちょっとわかりやすいルールの通信対戦ゲームが欲しいと思って、ジャンケンを題材にしたプログラムを作ってみました。
いずれ中学生向けに試してみたいと思います。