Skip to content

Активност

Групно телепортовање патке

Средње | MakeCode, Python | Акцелерометар - мерач убрзања, Радио | Комуникација, Логичке операције, Радио таласи

Корак 1: Уради

Шта је ово?

Друштвена игра ‘врућ кромпир’ користи радио-везу – или врућу патку!

3 micro:bit-a, 1 се протресе и на лед екрану се приказује патка

Како то ради

  • Као и у игри Телепортовање патке (Teleporting duck), користи се радио-веза како би се 'патка' радио таласима послала на други micro:bit. Игру играју само 2 играча јер се иста порука шаље свима - убрзо ћете сазнати да су скоро сви имају патку, као и да су сви могли да је пошаљу.
  • Ако ову игру игра више од 2 играча, сваки micro:bit уређај мора да има могућност да одабере коме ће порука бити послата, због тога програм сваког играча има свој јединствени идентификациони број (ID), који може да почне од броја 1.
  • Тај број чувамо у променљивој коју зовемо ID, и потребно је број променити у 2, 3, 4, итд. за сваког играча пре него што пребацимо програм на његов micro:bit.
  • Поставите променљиву играчи на укупан број играча како би се осигурало да свако добије поруку, тачније добије патку. Програм на почетку сваком играчу на лед екрану приказује његов ID тако да сваки играч зна свој број.
  • Да бисмо осигурали да само играч код кога је приказана патка може да је проследи даље, програм шаље поруку протресањем микробита самоако дати играч има патку. Програм ово прати коришћењем логичке променљиве која се назива имаПатку. Логичка променљива може имати само две вредности: Тачно или Нетачно. На почетку само играч 1 има патку, нико други не може да је пошаље.
  • Када играч 1 протресе свој micro:bit, програм генерише случајан број између 1 и укупног броја играча. Ако случајни број није једнак ID-у датог играча, број се даље шаље путем радио-везе, пошиљаоцу се брише екран, а вредност променљиве имаПатку се поставља на Нетачно.
  • Ако је случајан број једнак ID-у датог броја, тај играч треба поново да протресе свој уређај, то је боље него да се слика патке пошаље самом себи - и изгуби негде у хиперпростору!
  • Ако твој micro:bit прими број, он проверава да ли је тај број једнак (да ли се поклапа) твом ID-у. Ако јесте, честитамо, добили сте патку! На твом лед екрану се појављује патка, а вредност променљиве имаПатку постаје Тачно, што значи да сада можете послати некоме патку.
  • Молимо вас да одговорно пребацујете патку: пазите да не испустите 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 морате поново протрести ваш micro:bit. Измените програм тако да се ово не дешава. Постоји неколико начина да се то уради.
  • Играч број 1 увек има патку на почетку игре. Да ли можете унапредити програм тако да се први играч изабере случајним одабиром? Како бисте ово саопштили micro:bit-у сваког играча?