Gra w kelnera – utrzymywanie równowagi

Przykład programu “gry w kelnera”

Zorganizujmy wyścigi kelnerów!
Końcowy efekt wyglądać będzie mniej więcej tak 😉

Zasady gry

Nasza gra polega na symulowaniu sytuacji, w której kelner (gracz) musi przenieść z punktu A do pkt B na tacy zupę (Micro:Bit). Zupy nie można rozlać. Kelner idzie z tacą trzymaną w wyciągniętej ręce – musi utrzymywać ją w równowadze, w przeciwnym razie zupa się wyleje i będzie musiał ją wytrzeć zanim ruszy dalej.

Gra ma formę zawodów kilku kelnerów, którzy wspólnie ścigają się kto dostarczy najwięcej zup w określonym czasie lub kto pierwszy dostarczy 5 zup.

Czas trwania lekcji: 2 x 45min

Na opracowanie gry zalecamy przeznaczyć dwie jednostki lekcyjne (najlepiej w jednym bloku).

  • Pierwszą godzinę lekcyjną przeznaczamy na wyjaśnienie zasad i zaprogramowanie płytki MB.
  • Podczas drugiej lekcji testujemy grę:
    – organizujemy zawody kelnerów.
    – testujemy poziom trudności gry i w razie potrzeby korygujemy go w kodzie.

    Zachęcamy uczniów do wymyślania nowych zasad i modyfikacji gry – zarówno w jej fizycznej formie (np. tor przeszkód między krzesłami, niesienie tacy z zawiązanymi oczami itp.) jak i w kodzie płytki MB (zmiana sposobu odblokowywania ruchu gracz)

Jak zaprogramujemy grę?

Płytka Micro:Bit symbolizująca zupę niesioną przez kelnera, ma wbudowany czujnik wychylenia, który może płynnie mierzyć wartość wychylenia płytki we wszystkich kierunkach. Mierząc wychylenie w osi X sprawdzamy czy taca z zupą utrzymywana jest w równowadze. Jeśli taca wychyli się zbyt mocno (zupa się rozlewa) gracz musi się zatrzymać, nacisnąć przycisk A na płytce (wytarcie rozlanej zupy), odczekać kilka sekund i dopiero wtedy może ruszyć dalej.

Co potrzebujesz:

Narzędzia:

  • Zestaw Micro:Bit dla pary uczniów
    – płytka BBC Micro:Bit
    – kabel micro USB – najlepiej z magnetyczną odczepianą końcówką
    – zasilanie płytki – sugerowane dwie baterie AAA (małe paluszki) + koszyk na baterie
  • Komputery dla uczniów (1 dla pary), rzutnik lub tablica interaktywna dla nauczyciela
  • Przeglądarka internetowa Chrome

Co uczniowie powinni umieć przed przystąpieniem do lekcji:

  • znajomość liczb ujemnych i wartości bezwzględnej
  • rozumienie konceptu zmiennych logicznych – PRAWDA / FAŁSZ
  • rozumienie konceptu instrukcji warunkowych – JEŻELI, JEŻELI / W PRZECIWNYM RAZIE
  • podstawowa umiejętność obsługi płytki MB – wgrywanie programów

Przebieg lekcji

1. Wprowadzenie

Tłumaczymy uczniom zasady gry, którą będziemy tworzyć, aby lepiej zademonstrować na czym będzie polegała zabawa możemy przeprowadzić pokaz dając jednemu z uczniów zaprogramowaną płytkę MB z wgranym programem gry w kelnera. Uczeń ma za zadanie przejść z uruchomionym programem całą klasę bez “rozlewania zupy”

Tacę z zupą symulujemy przy pomocy płytki MB położonej na dużej, sztywnej książce. Aby utrzymanie równowagi było trudniejsze możemy ustalić, że “tacę” należy nieść w ręce wyciągniętej prosto przed siebie.

2. Przygotowanie do pracy

Gdy mamy pewność, że wszyscy uczniowie rozumieją zasady gry nad którą będziemy pracować przystępujemy do programowania.

Przygotowanie do pracy:

  • Uruchamiamy aplikację MakeCode i podłączamy płytkę Micro:Bit do komputera
  • Jeśli trzeba parujemy płytkę z komputerem (procedura parowania opisana jest w lekcji nr 3)
  • Aby upewnić się, że jesteśmy gotowi do pracy wgrywamy jakikolwiek podstawowy program na płytkę np. wyświetlenie serduszka na matrycy LED
  • 3. Programujemy grę

    Kiedy zupa została wylana?
    Musimy wykrywać moment, w którym “zupa niesiona na tacy została wylana”. “Zupę” symuluje płytka MB, “wylanie zupy” wykrywamy przy pomocy czujnika przyspieszenia czyli AKCELEROMETRU.

    W pierwszej kolejności zobaczmy jakie odczyty otrzymujemy z akcelerometru. Z zakładki WEJŚCIE wyjmujemy bloczek PRZYSPIESZENIE (mg) X – interesuje nas wychylenie płytki w poziomie czyli w osi X.

    Sprawdzamy jakie wartości możemy odczytać z czujnika przyspieszenia w symulatorze. Przesuwając kursorem myszki po obrazku płytki MB w polu symulatora obracamy wirtualną płytkę Micro:Bit. Możemy zaobserwować, że odczyty z czujnika, w polu oznaczonym ax zmieniają się w zakresie – od minus 1023 do plus 1023

    Zwracamy uwagę uczniów na fakt, że jeśli płytka leży dokładnie poziomo odczyt z czujnika wynosi ZERO, jeśli przekręcamy płytkę w lewo odczyt maleje do wartości ujemnej -1023, jeśli przekręcamy w prawo odczyt rośnie do wartości 1023 – zmianę tych wartości obserwujemy w symulatorze.

    Odczyty z czujnika możwmy zwizualizować na wyświetlaczu LED płytki dzięŻi wyświelteniu ich w postaci wykresu słupkowegoprzy pomocy bloczka PLOT BAR GRAPH

    Przez chwilę testujemy wychylanie płytki Micro:Bit i wskazania na wyświetlaczu – wspólnie z uczniami próbujemy oszacować przy jakiej wartości odczytów uznajemy, że “zupa została wylana” – jest to wartość, którą musimy dobrać doświadczalnie – będzie od niej zależeć trudność naszej gry.

    Im mniejsza wartość graniczna – tym uważniej trzeba nieść tacę – szukamy wspólnie takiej wartości przy której gra nie będzie ani zbyt łatwa ani zbyt trudna – proponuję zacząć od wartości 100 – jeśli gra będzie zbyt łatwa możemy tę wartość zmniejszyć

    [ obrazek – na osi X pokazanie zakresu gdzie zupa została wylana]

    Ponieważ odczyty z czujnika przyspieszenia wahają się od wartości ujemnych do dodatnich porównujemy BEZWZGLĘDNĄ WARTOŚĆ odczytu z czujnika – kiedy bezwzględna wartość odczytu przyspieszenia w osi X jest mniejsza od 100 – taca niesiona jest poprawnie (zupa się nie wylewa) gdy wartość ta przekroczy 100 – zupa została wylana

    Zablokowanie gry

    W momencie gdy “zupa została wylana” chcemy zablokować grę – gracz nie może iść dalej dopóki jej nie wytrze – aby tego dokonać wprowadzamy zmienną logiczną o nazwie GRA i na jej podstawie określamy warunek
    – Jeżeli zmienna GRA == PRAWDA – gracz niesie tacę, wyświetlamy odczyty z czujnika na wyświetlaczu i cały czas sprawdzamy czy “zupa nie została rozlana”
    – Jeżeli zmienna GRA == FAŁSZ – gracz musi się zatrzymać, wyświetlamy ikonę “smutnej minki” i czekamy aż gracz “wytrze zupę”

    Wytarcie zupy
    Aby gracz mógł ruszyć dalej musi symbolicznie “posprzątać rozlaną zupę” czyli odczekać kilka karnych sekund w miejscu. Aby “wytrzeć zupę” gracz musi nacisnąć przycisk A na płytce MB i poczekać aż na wyświetlaczu minie odliczanie 3..2..1 i ponownie pojawi się wykres z pomiarem wychylenia płytki.

    Gotowy kod gry