Skip to content

Atividade

Teletransporta Patos em grupo

Intermédio | MakeCode, Python | Acelerómetro, Rádio | Comunicação, Lógica Booleana, Ondas rádio

Passo 1: Faz tu mesmo

O que é isto?

Usa rádio no jogo de grupo da "batata quente" - ou do pato quente!

3 micro:bit's, um deles é abanado e no ecrã de LEDs da outra pessoa aparece um pato

Como é que funciona

  • O receptor mostra as leituras do acelerómetro no ecrã de LEDs. Este jogo só funciona com 2 jogadores porque envia a mesma mensagem para todos - depressa aconteceria que vários tinham um pato e poderiam atirá-lo ao mesmo tempo.
  • Se forem mais de 2 jogadores, cada micro:bit precisa de ter uma maneira de escolher qual o jogador que vai receber o pato, por isso cada jogador tem um número de ID único, começando com o 1.
  • Guardamos este valor numa variável chamada ID, e terás de mudar este número para 2, 3, 4, etc. no código dos outros jogadores antes de descarregares o programa para os micro:bits deles.
  • Muda a variável players (jogadores) com o número total de pessoas que vão jogar, de maneira a todos terem oportunidade de receber o pato. Quando os micro:bits são ligados, o programa mostra o número de ID do respetivo jogador no ecrã de LEDs de forma a que cada um saiba o seu número.
  • Para garantir que só quem tem o pato é que o pode enviar, quando abanas o micro:bit o programa só envia uma mensagem if (se) tu tiveres o pato. O programa controla isto usando uma variável Booleana chamada hasDuck. Variáveis booleanas só podem ter dois valores: Verdadeiro ou Falso. No início só o jogador 1 é que tem o pato, mais ninguém o pode lançar.
  • Quando o jogador 1 abana o micro:bit, o programa gera um número aleatório entre 1 e o número total de jogadores. Se o número aleatório é diferente do seu próprio número de ID, o micro:bit envia o novo ID por rádio, limpa o ecrã e define a variável hasDuck para Falso.
  • Se o número aleatório é igual ao seu próprio ID, a jogadora vai precisar de lançar de novo, mas isso é melhor do que o pato ser enviado para ela - e de se perder no hiperespaço!
  • Se o teu micro:bit receber um número, verifica se é igual (corresponde) ao teu número de ID. Se isso acontecer, agora tens o pato! Parabéns! Um pato aparece no teu ecrã de LEDs, e a tua variável hasDuck é definida como Verdadeira, o que quer dizer que agora podes lançar o pato para outra pessoa.
  • Por favor, envia o pato de forma responsável: certifica-te de que não perdes o micro:bit ou que não chocas com um amigo com o entusiasmo do jogo.

Do que é que precisas

  • 3 ou mais micro:bits
  • Editor MakeCode ou Python
  • suporte de pilhas (opcional)
  • um grupo de pessoas com quem jogar

Passo 2: Cria o teu código

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    

Passo 3: Melhora-o

  • Muda o programa para enviar outras coisas em vez de patos.
  • Se a dada altura ele escolher um número aleatório igual ao teu número de identificação, tens de sacudi-lo outra vez. Altera o programa para que isto nunca aconteça. Talvez haja mais do que uma maneira de fazer isso.
  • No início do jogo, o Jogador 1 tem sempreo pato. Será que consegues melhorar o programa de maneira a que o primeiro jogador com o pato seja escolhido aleatoriamente? Como é que comunicarias isso com o micro:bit de cada jogador?