Skip to content

Aktivnost

Teleportiranje patke u grupi

Srednji | MakeCode, Python | Mjerač ubrzanja, Radio | Booleova logika, Komunikacija, Radiovalovi

1. korak: Napravi

Što je to?

Društvena igra prebacivanja 'vrućeg krumpira' putem radija - ili vruće patke!

3 micro:bita, jedan se zatrese i na LED zaslonu prikaže patku

Kako to radi

  • Poput igre Teleportiranje patke (Teleporting duck), ovdje se koristi radio kako bi se 'patka' poslala zrakom drugom micro:bitu. Igru vrijedi samo s 2 igrača jer ona šalje svima istu poruku - ubrzo ćeš saznati da su skoro svi dobili patku i svatko ju je mogao poslati.
  • Ako igra više od 2 igrača, onda svaki micro:bit mora moći odabrati kome će poslati patku i zato svaki igrač u svom programu ima svoj jedinstveni identifikacijski broj, počevši od 1.
  • Taj se broj pohranjuje u varijabli nazvanoj ID, a trebati će ga promijeniti u 2, 3, 4, itd. za svakog sljedećeg igrača prije flashanja programa na njegov micro:bit.
  • Postavi varijablu igrači na broj igrača tako da svakome osiguraš mogućnost dobivanja patke. Program na početku svakom igraču pokaže njegov ID broj na LED zaslonu tako da se zna tko ima koji broj.
  • Treba osigurati da samo onaj igrač koji ima patku može poslati ju dalje, zato program dozvoljava slanje poruke potresanjem samo ako dotični igrač ima patku. Program to prati putem Boolove varijable nazvane imaPatku. Boolova varijabla može imati samo dvije vrijednosti: Točno ili Netočno. Na početku patku ima samo igrač broj 1, nitko drugi ne može ju poslati.
  • Kada igrač broj 1 zatrese svoj micro:bit, program generira slučajni broj između 1 i broja igrača. Ako slučajni broj nije jednak ID broju dotičnog igrača, taj se broj šalje radiom, pošiljatelju se briše ekran, a varijabla imaPatku postavlja se na Netočno.
  • Ako je slučajni broj jednak ID broju dotičnog igrača, on treba pokušati ponovo, no i to je bolje nego slati patku sam sebi pa ju izgubiti negdje u hiperprostoru!
  • Ako tvoj micro:bit primi broj, on provjerava je li to tvoj ID broj. Ako je, čestitamo, dobio si patku! Na tvom LED zaslonu pojavljuje se patka, a tvoja varijablja ima Patku postavlja se na Točno, što znači da sada ti možeš nekome poslati patku.
  • Nastoj odgovorno prebacivati patke: pazi da ti micro:bit ne padne ili da u žaru igre nekoga ne udariš.

Što ti treba

  • 3 ili više micro:bita
  • Uređivač MakeCode ili Python
  • komplet baterija (prema potrebi)
  • grupa ljudi s kojima ćeš igrati

2. korak: Kodiraj

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. korak: Unaprijedi

  • Promijeni u programu da se umjesto patke prebacuju druge stvari.
  • Za sada moraš ponovo zatresti micro:bit ako je odabrani broj jednak tvom ID broju. Promijeni program tako da se to ne može desiti. Za to ima više načina.
  • Igrač broj 1 uvijek na početku igre ima patku. Možeš li unaprijediti program tako da se prvi igrač s patkom izabere slučajnim odabirom? Kako bi to dojavio na micro:bitove svih ostalih igrača?