Skip to content

Activiteit

Groep teleporterende eend

Gevorderd | MakeCode, Python | Acceleratiemeter, Radio | Boolean logica, Communicatie, Radiogolven

Stap 1: Maak het

Wat is het?

Een groeps spel 'hete aardappel' met behulp van radio - of hete eend!

3 micro:bits, 1 wordt geschud en toont een eend op het LED display

Zo werkt het

  • Net als het Teleporting eend spel, gebruikt dit de radio om een 'eend' door de lucht te sturen tussen micro:bits Dat spel werkt alleen met 2 spelers omdat het dezelfde boodschap naar iedereen stuurt - al snel zou je merken dat bijna iedereen een eend had en iedereen er een kon gooien.
  • Als je meer dan 2 spelers hebt, moet elke micro:bit een manier hebben om te kiezen welke speler de eend krijgt, zodat het programma van elke speler een uniek ID-nummer heeft, beginnend met 1.
  • We slaan dit op in een variabele genaamd ID, en je moet dit voor elke speler veranderen in 2, 3, 4 enz. voordat je het programma op hun micro:bits flasht.
  • Stel de spelers variabel in op het aantal mensen om ervoor te zorgen dat iedereen een kans heeft om de eend te krijgen. Het programma toont aan het begin het speler-ID-nummer op het LED display, zodat je weet wie welk nummer heeft.
  • Om er zeker van te zijn dat alleen de speler die de eend heeft hem kan weggooien, stuurt het programma alleen een bericht als je hem schudt als je de eend hebt. Het houdt dit bij met behulp van een Booleaanse variabele genaamd heeftEend. Booleaanse variabelen kunnen maar twee waarden hebben: Waar of Onwaar. Bij de start heeft alleen speler 1 de eend, niemand anders kan hem gooien.
  • Wanneer speler 1 haar micro:bit schudt, genereert het programma een willekeurig getal tussen 1 en het aantal spelers. Als het willekeurige nummer niet gelijk is aan haar eigen ID-nummer, stuurt het het nieuwe ID-nummer via de radio, wist haar scherm en stelt haar heeftEend variabele in op onwaar.
  • Als het willekeurige getal gelijk is aan haar eigen ID, moet ze opnieuw gooien, maar dat is beter dan de eend die naar zichzelf wordt gestuurd en verdwaalt in hyperspace!
  • Als je micro:bit een nummer ontvangt, controleert het of het gelijk is aan (overeenkomt met) je ID-nummer. Als dat zo is, gefeliciteerd, je hebt nu de eend! Er verschijnt een eend op je LED display en je heeftEend variabele wordt ingesteld op Waar, wat betekent dat je de eend nu naar iemand anders kunt gooien.
  • Gooi eenden alsjeblieft op verantwoorde wijze weg: zorg ervoor dat je je micro:bit niet laat vallen of een vriend raakt terwijl je geniet van dit spel.

Benodigdheden

  • 3 of meer micro:bits
  • MakeCode of Python editor
  • Batterij pakketten (optioneel)
  • een groep mensen waarmee je wilt spelen

Step 2: Codeer het

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    

Stap 3: Verbeter het

  • Verander het programma om andere dingen te sturen in plaats van eenden.
  • Als het op dit moment een willekeurig nummer kiest dat hetzelfde is als jouw eigen ID-nummer, moet je opnieuw schudden. Pas het programma aan zodat dit nooit gebeurt. Er kan meer dan één manier zijn om dit te doen.
  • Speler 1 heeft altijd de eend aan het begin van het spel. Kun je het programma verbeteren zodat de eerste speler met de eend willekeurig wordt gekozen? Hoe zou je dit communiceren naar de micro:bit van elke speler?