Skip to content

Actividad

Pato escapista multijugador

Intermedio | MakeCode, Python | Acelerómetro, Radio | Comunicación, Lógica booleana, Ondas de radio

Paso 1: Hazlo

¿Qué es?

Un juego de grupo de "patata caliente" con la radio – ¡o pato caliente!

3 micro:bits, uno de ellos siendo agitado y mostrando un pato en su pantalla LED

Cómo funciona

  • Como el juego del Pato escapista, este juego usa la radio para enviar un "pato" a través del aire entre micro:bits. Ese juego solamente funciona con 2 jugadores porque envía el mismo mensaje a todos – pronto todos los jugadores acabarían con un pato y cualquiera podría enviarlo.
  • Si hay más de dos jugadores, el micro:bit debe poder ser capaz de comunicar inequívocamente qué otro jugador es el receptor. Para ello, a cada micro:bit se le asigna un identificador (ID) único, empezando por el 1.
  • Este identificador se almacena en una variable llamada ID. Tras cargar el programa en un micro:bit, deberás sumarle uno a este valor para que no haya dos micro:bits con el mismo identificador único.
  • Cambia la variable players (jugadores) al número total de personas que vayan a jugar, para que todos tengan la oportunidad de recibirlo. Para que sepas cuál es el ID de cada jugador, éste se mostrará brevemente en la pantalla LED al empezar.
  • Para asegurarse de que sólo el jugador que tiene el pato puede enviarlo, el programa sólo enviará un mensaje al agitarlo si tienes el pato. Para saber si lo tienes, utiliza una variable booleana llamada hasDuck (tienePato). Las variables booleanas sólamente pueden tener dos valores: verdadero o falso. Al principio sólo el jugador 1 tiene el pato, de manera que nadie más pueda lanzarlo.
  • Cuando el jugador 1 agita su micro:bit, el programa genera un número aleatorio entre 1 y el número de jugadores. Si el número aleatorio no es igual a su propio número de identificación, lo envía por radio, limpia la pantalla y establece su variable de hasDuck a falso.
  • Si el número aleatorio es igual a su propio número de identificación, tendrá que lanzarlo otra vez. Si se enviara el pato a uno mismo – ¡se perdería en el hiperespacio!
  • Si tu micro:bit recibe un número, comprueba si es igual a (coincide con) tu número de identificación. Si lo hace, ¡felicidades! Ahora tienes el pato. Un pato aparecerá en tu pantalla LED, tu variable hasDuck se establecerá a verdadero, y por lo tanto podrás lanzar el pato a otra persona.
  • Por favor, lanza los patos con responsabilidad: asegúrate de que no se te caiga el micro:bit o le des a un amigo mientras disfrutas de este juego.

Qué necesitas

  • 3 o más micro:bits
  • Editor de MakeCode o de Python
  • pilas (opcional)
  • un grupo de personas con quien jugar

Paso 2: Prográmalo

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    

Paso 3: Mejóralo

  • Cambia el programa para enviar otras cosas en lugar de patos.
  • Por el momento, si el número aleatorio generado es igual a tu propio número de identificación, tienes que volver a agitarlo. Modifica el programa para que esto nunca ocurra. Puede haber más de una solución posible.
  • Al empezar el juego, el jugador 1 siempre tiene el pato. ¿Podrías mejorar el programa para que se decida al azar qué jugador tiene el pato al empezar? ¿Cómo lo comunicarías al resto de micro:bits?