Skip to content

アクティビティ

グループでテレポートするアヒル

中級 | MakeCode, Python | 加速度センサー, 無線 | ブール論理, 通信, 電波

ステップ1: 作る

説明

無線を使った「ホットポテト投げ」いや「ホットダック投げ」グループゲームです!

micro:bit 3台(1台は揺するとLED画面にアヒルを表示する)

動作の仕組み

  • アヒルのテレポートゲームと同じく、このプログラムでも無線を使って micro:bit 間で空中に「アヒル」を投げます。 あのゲームは、同じメッセージを全員に送るので、2人でしか遊べませんでした。すぐに気が付きますが、みんながアヒルを持っていて、誰でも投げられてしまいます。
  • プレイヤーが2人以上の場合、各micro:bitはどのプレイヤーがアヒルを手に入れるか選ぶ方法を持たなければならないので、各プレイヤーのプログラムには1から始まる固有ID番号が振られます。
  • これを変数IDに格納し、各 micro:bit に書き込む前に2、3、4などに変更します。
  • players変数 に人数を設定して、全員がアヒルを獲得できるチャンスがあることを確認します。 プログラムは、LEDディスプレイにプレーヤーID番号を表示するので、誰がどの番号かわかります。
  • アヒルを持っているプレイヤーだけが投げられるようにするために、このプログラムはアヒルを持っている場合に限り、micro:bitをゆさぶるとメッセージを送信します。 Boolean 変数 hasDuck を使用してこれを記録します。 論理型変数は、True か False の2つの値だけを持てます。 スタート時にプレイヤー1だけがアヒルを持ち、他の誰も投げられません。
  • プレイヤー1がmicro:bitをゆさぶると、プログラムは1からプレイヤー数の間の乱数を生成します。 乱数が自分のID番号と等しくなければ、新しいID番号を無線で送信し、画面をクリアして>hasDuck変数をFalseに設定します。
  • 乱数が自分のID番号と等しい場合、再度投げる必要があります。自分にカモが投げられて、ハイパー空間でなくすよりましです!
  • micro:bitが番号を受け取った場合、ID番号が自分のID番号と等しい(一致)するか確認します。 等しい場合は、おめでとう、カモを今を持っています! カモはLEDディスプレイに表示され、hasDuck変数はTrueになり、今度は他の誰かにカモを投げられます。
  • カモは人に迷惑をかけないで投げてください:ゲームに夢中になって、micro:bitを落したり、友達にぶつけないようにしましょう。

必要なもの

  • 3つ以上のmicro:bit
  • MakeCodeまたはPythonエディター
  • バッテリーパック(オプション)
  • 一緒に遊ぶグループ

ステップ2: プログラムする

1from microbit import *
2import radio
3import random
4
5radio.config(group=42)
6players = 3
7ID = 3
8display.show(ID)
9if ID == 1:
10    hasDuck = True
11else:
12    hasDuck = False
13radio.on()
14
15while True:
16    message = radio.receive()
17    if accelerometer.was_gesture('shake'):
18        if hasDuck:
19            sendTo = random.randint(1, players)
20            if sendTo != ID:
21                display.clear()
22                radio.send(str(sendTo))
23    if message:
24        if message == str(ID):
25            hasDuck = True
26            display.show(Image.DUCK)
27        else:
28            hasDuck = False
29    

ステップ3: 改善する

  • カモの代わりに他のものを投げるようにプログラムを変更しましょう。
  • 現時点では、自分のID番号と同じ乱数を選ぶ場合は、もう一度振る必要があります。 こうならないようにプログラムを変更しましょう。 こうするにはいくつかの方法があるかもしれません。
  • プレイヤー 1 はゲーム開始時に常に アヒルを持っています。 カモを持つ最初のプレーヤーがランダムに選択されるようにプログラムを改良できますか? 全プレイヤーのmicro:bitにどうやってこれを伝えますか?