Skip to content

Aktywność

Grupowa teleportacja kaczki

Średnio zaawansowany | MakeCode, Python | Akcelerometr, Radio | Fale radiowe, Komunikacja, Logika boolowska

Krok 1: Wykonaj to

Co to jest?

Gra grupowa z wykorzystaniem radia „gorący ziemniak”, zwana też „gorącą kaczką”.

3 micro:bits, 1 potrząsany i pokazujący kaczkę na wyświetlaczu LED

Jak to działa

  • Podobnie jak gra Teleport kaczki, ten program używa radia, by wysłać ‘kaczkę’ pomiędzy micro:bitami. Ta gra działa tylko dla 2 graczy, ponieważ wysyła tę samą wiadomość do wszystkich – wkrótce okazałoby się, że prawie każdy ma kaczkę i każdy może nią rzucić.
  • Jeśli jest więcej niż dwóch graczy, każdy micro:bit musi mieć sposób wyboru gracza, który otrzyma kaczkę, zatem każdy gracz musi mieć unikalny numer identyfikacyjny, począwszy od 1.
  • Przechowujemy te dane w zmiennej o nazwie ID, i musisz zmienić jej wartość na 2, 3, 4 itd dla każdego z graczy przed wgraniem programu na ich micro:bity.
  • Ustaw zmienną graczy na liczbę uczestników zabawy, aby zapewnić, że każdy będzie miał szansę otrzymać kaczkę. Program pokazuje ID gracza na wyświetlaczu LED na początku, dzięki czemu wiesz, kto otrzymał jaką liczbę.
  • Aby upewnić się, że tylko gracz, który ma kaczkę, może ją wysłąć, program wysyła wiadomość tylko po potrząśnięciu, jeśli masz kaczkę. Śledzi to używając zmiennej logicznej o nazwie hasDuck. Zmienne logiczne mogą mieć tylko dwie wartości: Prawda (True) lub Fałsz (False). Na początku, tylko gracz 1 ma kaczkę, nikt inny nie może jej rzucić.
  • Gdy gracz 1 potrząsa swój micro:bit, program generuje losową liczbę między wartością 1, a całkowitą liczbą graczy. Jeśli wylosowana liczba nie jest równa jego własnemu ID, wtedy wysyła nowe ID przez radio, czyści wyświetlacz i ustawia zmienną hasDuck na Fałsz (False).
  • Jeśli losowa liczba jest równa jego własnemu ID, wtedy gracz musi wysłać ponownie, ale to lepsze niż kaczka wysłana do siebie - i stracona w hiperprzestrzeni!
  • Jeśli Twój micro:bit otrzyma liczbę, sprawdza czy jest równy Twojemu ID. Jeśli tak jest, gratulacje, teraz ty masz kaczkę! Kaczka pojawia się na Twoim wyświetlaczu LED, a Twoja zmienna hasDuck jest ustawiona na Prawda (True), co oznacza, że możesz teraz wysłać kaczkę komuś innemu.
  • Proszę, graj odpowiedzialnie: upewnij się, że nie upuścisz swojego micro:bita ani nie uderzysz koleżankę czy kolegę podczas zabawy.

Czego potrzebujesz

  • 3 lub więcej micro:bitów
  • MakeCode lub edytor Pythona
  • pakiet baterii (opcjonalnie)
  • grupę rówieśników, by zagrać

Krok 2: Zakoduj to

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    

Krok 3: Ulepsz to

  • Zmień program, aby wysyłać inne rzeczy zamiast kaczek.
  • Obecnie, jeśli program wybiera losowo liczbę, która jest taka sama jak Twoje ID, musisz ponownie potrząsnąć. Zmodyfikuj program tak, aby to się nigdy nie wydarzyło. Może być więcej sposobów, by to zrobić.
  • Gracz 1 zawsze ma kaczkę na początku gry. Czy mógłbyś ulepszyć program, aby pierwszy gracz z kaczką był wybierany losowo? Jak to zakomunikujesz każdemu micro:bitowi graczy?