Skip to content

Atividade

Teleporte o pato multiplayer

Intermediário | MakeCode, Python | Acelerômetro, Rádio | Comunicação, Lógica booleana, Ondas de rádio

Primeiro passo: o projeto

O que é?

Um jogo de "batata quente" (ou pato quente) em grupo, via rádio.

Três micro:bits: um deles está sendo sacudido e mostrando um pato em seu visor LED

Como funciona:

  • Como o jogo Teleporte o pato, este também usa o rádio para "teleportar" um "pato" para outros micro:bits. Este jogo só funciona com 2 jogadores, pois envia a mesma mensagem a todos. Em breve você descobrirá que quase todos tinham um pato e qualquer um poderia teleportá-lo;
  • Se houver mais de 2 jogadores, é necessário que cada micro:bit possua uma maneira de escolher qual jogador irá receber o pato. Assim, o programa de cada jogador terá um número de identificação (ID) exclusivo, começando pelo número 1;
  • Armazenamos esta identificação em uma variável chamada ID, que você precisará alterar para 2, 3, 4 e assim por diante, para cada jogador — antes de instalar o programa nos micro:bits;
  • Defina a variável players com o número de participantes, garantindo que todos tenham a chance de "pegar" o pato. Quando os micro:bits são ligados, o programa mostra o número de identificação do respectivo jogador no visor LED, para que cada um saiba o seu número;
  • Para garantir que apenas o jogador que tem o pato possa se livrar dele, o programa só envia a mensagem quando você o sacode, se você tiver o pato. O programa controla isso usando uma variável booleana chamada hasDuck (temPato). Variáveis ​​booleanas podem ter apenas dois valores: verdadeiro ou falso. No início, apenas o jogador 1 tem o pato, ninguém mais pode teleportá-lo;
  • Quando o jogador 1 sacode seu micro:bit, o programa gera um número aleatório entre 1 e o número de jogadores. Se o número aleatório não for igual ao seu próprio número de identificação, o programa envia o novo número por rádio, limpa a tela e muda o valor da sua variável hasDuck para falso;
  • Se o número aleatório for igual ao seu próprio ID, será preciso jogar novamente, mas isso é melhor que enviar o pato a si mesmo;
  • Se o seu micro:bit receber um número, ele verifica se ele é igual (corresponde) ao seu número de identificação. Se sim, parabéns! Agora você tem o pato. Um pato aparece no visor LED e sua variável hasDuck é alterada para True, o que significa que agora você pode teleportá-lo para outra pessoa;
  • Teleporte os patos de forma responsável: certifique-se de não deixar o seu micro:bit cair e não golpeie um amigo no meio da diversão.

Itens necessários:

  • Três ou mais micro:bits;
  • Editor MakeCode ou Python;
  • Conjuntos de baterias (opcional);
  • Um grupo de pessoas para brincar.

Segundo passo: é hora de programar

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    

Terceiro passo: vamos deixar o código ainda melhor

  • Mude o programa para enviar outras coisas em vez de patos;
  • Na versão atual, se o programa escolher um número aleatório igual ao seu próprio número de identificação, será necessário agitar novamente. Modifique o programa para que isso nunca aconteça. Para isso, pode haver mais de uma maneira de fazer;
  • O jogador 1 sempre tem o pato no início do jogo. Você conseguiria melhorar o programa para que o primeiro jogador com o pato seja escolhido aleatoriamente? Como você comunicaria isso ao micro:bit de cada jogador?