見出し画像

M5StickC Plus とUIFlowでプログラミング(8) - じゃんけんプログラム基礎(後編ESPNowを使う)

さて、(7)までで、自分の手を表示することはできました。じゃんけんゲームをするには相手の手を知らなければなりません。

ESPNowによる通信

 複数台のM5StickC Plus を使用して通信をすることができます。M5StickC Plusでは、様々な通信方法をとることができますが、ここでは比較的扱いが簡単な「ESPNow」という方法を使用してみます。ベースとなっている技術はWi-Fi通信のようです。

(2022/8/10 UIFlow v1.10.2の現在、EspNowまわりのブロックが変更になっています。この記事の「m5fファイル」を読み込むと古いブロックで読み込み、動作もするようなのですが、新規に作成することはできなくなっています。ということは多分サーバー側のブロックモジュールが変更になっていると推測されます。互換性のために古いファイルも残してある感じでしょうか。後述する「ブロードキャスト通信」のブロックがなくなっており、ブロックも細かい変更がされています。「コードを実行」で旧版と同名で無理やりPythonコードを実行させてみましたが、新しい方のブロックモジュールには同名ではブロードキャスト通信が含まれていないようです。変更に対応できるように修正中です。また、日本語化がされなくなりました。)

※2023/03/04追記
どうやら、EspNowを使用すると、Wi-FiをEspNowに持っていかれるようで、UIFlowの「Run」が機能しなくなります。以前はEspNow使用時にも「Run」ができたのですが…。一度実行した後にプログラムを修正して再度送る、などのときにはリセット(電源ボタンを押す)するしかないようです。ちょっと手間が増えるようになった…かな?
また、以前のコードも、そのままでは動作しなくなっているようです。
ここの項目は近日中に起こし直します。


画像2

 まず、Bボタンを押したときの動作に、「データ(自分の手)をブロードキャスト送信」を追加します。これで、周りに自分の手を送信します。

画像4

 ブロードキャスト送信は、相手を指定せずに全体に投げかける通信です。イメージ的には大声で教室中に叫ぶようなイメージです。みんなに分かります。
 受け側は「MACアドレス(MACアドレス)からデータ(受信データ)を受信」で受信します。

画像5

 変数に「相手の手」「MACアドレス」「受信データ」を新たに作りましょう。「MACアドレス」はLAN機器1つ1つに割り当てられている文字列で、送信してきた相手を特定することができますが、今回は使いません。ESPNowでの受信データはテキストで送られて来るので、後の判定に利用するために、中央エリア「数学」の「整数に変換する」ブロックで整数にしておきましょう。そうしないと、見た目は数字でも、文字列としての数字で判定がされてしまうので、正しく判定されなくなってしまいます。

画像6

 また、画像をもう1つ追加して、Aボタンを押したときに相手の手を表示できるようにしておきましょう。追加した変数や画像は初期化や非表示にしておくとよいです。

画像6

使用する相手側の手の画像を添付しておきます。

 ボタンAの処理です。基本的にはボタンBと同じ処理を使いまわします。「自分の手」が「相手の手」に、画像を「image0」から「image1」に、「gu_me」などの画像の指定を「gu_you」に変更するなどです。

画像7

 これで、「自分の手を選ぶ」「自分の手を相手に送信する」「相手の手を表示する」という、じゃんけんゲームの根本的な部分はできました。

 後は、ゲームとしての使い勝手というか、どれだけユーザーにとって分かりやすくできるか、という部分で工夫のしがいはあると思います。
 ここまでのプログラム全体を載せておきます。

画像8





この記事が気に入ったらサポートをしてみませんか?