Skip to content

Activitat

L'ànec teletransportat en grup

Intermedi | MakeCode, Python | Acceleròmetre, Ràdio | Comunicació, Lògica booleana, Ràdio

Pas 1: Crea-ho

En què consisteix?

Un joc de grup de "patata calenta" utilitzant la ràdio, o ànec calent!

3 micro:bits, 1 es sacseja i mostra un ànec a la seva pantalla LED

Com funciona

  • Com en el Joc de l'ànec teleportat, aquest utilitza la ràdioper enviar un "ànec" a través de l'aire entre micro:bits. Aquest joc només funciona per a dos jugadors, ja que envia el mateix missatge a tothom - aviat trobaràs que gairebé tothom tenia un ànec i ningú en podia llançar un..
  • Si teniu més de 2 jugadors, cada micro:bit ha de tenir una manera de triar quin jugador rebrà l'ànec, de manera que el programa de cada jugador tingui un número d'identificació únic, començant per 1.
  • Emmagatzemem això en una variable anomenada ID, i necessitaràs canviar-lo per 2, 3, 4, etc. per cada jugador abans de transferir el programa a les seves micro:bits.
  • Estableix en la variable game started (jugadors) al nombre de gent per assegurar que tothom pot rebre un ànec. El programa mostra el número d'ID del jugador en la pantalla dels leds al principi, així sabràs qui ha rebut quin número.
  • Per estar segur que només el jugador que té l'ànec pot tirar-lo, el programa, només envia un missatge quan el sacseges si tens l'ànec. Fa seguiment d'això fent servir una variable Booleana anomenada tensÀnec (hasDuck). Les variables Booleanes només poden tenir dos valors: Cert (True) o Fals (False). A l'inici només el jugador 1 té l'ànec, ningú més pot llençar-lot.
  • Quan el jugador 1 sacseja la seva micro:bit, el programa genera un nombre a l'atzar entre 1 i el nombre de jugadors. Si el nombre a l'atzar es no igual a el seu propi número d'ID, envia un nou número d'ID per ràdio, esborra la pantalla i estableix la seva variable tensÀnec (hasDuck) com Fals (False).
  • Si el nombre a l'atzarés igual al seu propi ID, ha de tornar a tirar, però això es millor que enviar-se l'ànec a un mateix– i perdre's en l'hiperespai!
  • Si la teva micro:bit rep un número, el verifica per veure si es igual (coincideix) al teu número d'ID. Si ho és, l'enhorabona, ara tens l'ànec! Un ànec apareix en la pantalla de leds, i la teva variable tensÀnec (hasDuck)passa a ser Cert (True), volent dir que ara pots enviar l'ànec a algú altre.
  • Si us plau, tira els ànecs de manera responsable: assegura't de no deixar caure la teva micro:bit ni colpejar cap amic per gaudir d'aquest joc.

Què necessites

  • 3 o més micro:bits
  • Editor MakeCode o Python
  • piles (opcional)
  • Un grup de persones amb qui jugar

Pas 2: Programa-ho

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    

Pas 3: Millora-ho

  • Canvia el programa per enviar altres coses en lloc d'ànecs.
  • Ara, si tria un nombre aleatori que és el mateix que el teu nombre d'identificació, hauràs de tornar a sacsejar. Modifica el programa perquè això no passi mai. Pot haver-hi més d'una manera de fer-ho.
  • El jugador 1 sempre té l'ànec a l'inici del programa. Podries millorar el programa per fer que el primer jugador amb l'ànec fos triat a l'atzar? Com comunicaràs això a la micro:bit de cada jugador.