今年(2020年)のMaker Faire Kyotoがオンライン開催になったので、micro:bitのプログラム作品を出展します。

2台以上のmicro:bitを使ってじゃんけんができるもので、作品そのものはずいぶん前に作ったものですが、新型コロナウイルスで #STAYHOME な現在、自宅で簡単に楽しめてプログラム(勝ち負けの判定)にもそれなりに工夫ポイントがありますので、参考になるかなと思い、出展することとしました。

プログラムはmicro:bit MakeCodeで公開しています。

操作方法

A,Bボタンの押し方によって、以下の通り自分の手によってアイコンが表示されます。

ボタン 出す手 表示されるマーク
A グー 菱形(ダイヤモンド)
B チョキ はさみ
A+B パー 四角

他の人の手が決まると勝ち負け判定を行い、勝つとハートマーク、負けるとドクロマークが表示されます。

ロジック

勝ち負けの判定方法

じゃんけんの勝ち負けは人数に関係なく、出した手が二種類の場合だけ決まります。それ以外(一種類か三種類)の場合はあいこになりますので、全員が出した手の中に何種類の手があるかを調べます。いくつあるかは関係ありませんので、手の数を数えなくても大丈夫です。

今回は、グー、チョキ、パーをそれぞれ1〜3の数字で表すようにしました。

1 グー
2 チョキ
3 パー

グーはチョキに、チョキはパーに勝つので、自分の手の数字に1を足した数字が相手の手の数字が同じであれば自分の勝ちと判断できます。

ただし、自分がパー(3)の場合はこの考え方で判断できないので、パーの時だけ相手がグー(1)かどうかを個別に判断しています。

判定のタイミング

じゃんけんなので、自分の手が決まって、他の人の手が決まらないと判定できません。このプログラムでは、自分の手が決まった時、他の人の手が決まった時(手の情報を受け取った時)に勝ち負け判定を行います。

ただし、3人以上でやる場合遅れて押した人が判定の対象にならない場合がありますので、判定時に2秒待って遅れて押した人の手も判定に加えています。

手の情報の交換方法

自分の手は、無線で数値を送ることで他の人に知らせています。

既知の不具合について

勝ち負けの判定がうまく行かない場合があります、ここについてはまだ原因を調べている段階です。プログラム的に改良する余地があるかもしれません。もし改良版を作られた方がいらっしゃったら、シェアしていただけると嬉しいです。