Gra – Balansująca Belka

Stworzymy grę “Balansująca Belka”

Czas trwania – DO WPISANIA
Poziom trudności – DO WPISANIA

Wstęp

Świetna gra, dzięki której poćwiczysz zręczność i refleks. Balansująca Belka polega na utrzymywaniu kulki na jednowymiarowej belce, która przechyla się w zależności od użytego kontrolera – potencjometru, czujnika światła, a nawet przycisku!

Przygotowanie

Moduły:

  • LOFI Brain
  • Przycisk
  • Czujnik światła
  • Potencjometr
  • Kabel USB

Co wcześniej trzeba przygotować:

Przeglądarkę Google Chrome z rozszerzeniem LOFI Robot ScratchX
(https://www.lofirobot.com/edubox/konfiguracja/)

Konstrukcja robota

Podłączenie:

  • Czujnik światła → port INPUT3
  • Przycisk → INPUT1
  • Potencjometr → INPUT2
  • Zasilanie robota → kabel USB → wyjście USB w komputerze

Przebieg

Tworzenie środowiska gry

Grę zaczniemy od narysowania tła, belki i kulki.

Tło będzie w naszym przypadku pomarańczowe, a jakże!

Tło

Belka powinna przebiegać przez środkek, a jako, że będziemy przy jej pomocy balansowali piłką to musimy punkt obrotu ustawić na środku planszy.

2_Belka

Punkt obrotu znajduje się na środku planszy czyli na współrzędnych X=50; Y=50, a więc żeby belka przebiegała przez środek planszy trzeba było odpowiednio “wyregulować” jej położenie. Czas na kulkę, która będzie poruszała się wzdłuż górnej krawędzi belki.

3_Kulka

Obracanie belki

W celu szybszego testowania gry, obrót belki będzie uzależniony od pozycji myszki w osi X. Dodajmy zmienną Obrot i ustawiajmy i ustawmy ją na Mysz X. Pamiętaj o dodaniu bloku zmiennej Obrot do bloku obracania.

4_obracanie_belki_myszx

Problem jest taki, że pozycja myszki odczytywana jest w przedziale od 0 do 100. Czyli możemy przekręcić belkę do 100 stopni zgodnie z ruchem wskazówek zegara. My potrzebujemy przedziału najlepiej od -50 do 50, więc użyjemy bloku matematycznego!

5_obracanie_belki_od-50do50

Lepiej? No lepiej!

Wprawianie kulki w ruch

Żeby kulka poruszała się po belce zgodnie z uproszczonymi prawami fizyki zmieniajmy jej położenie w osi X o wartość obrotu. Przede wszystkim potrzebować będziemy zmiennej odpowiadającej położeniu kulki. Nazwę ją KulkaX.

5_ruch_kulki_o_obrot

Cóż… piłka faktycznie porusza się wzdłuż belki, jednakże jest bardzo, bardzo szybka i właściwie to prawa fizyki zostały totalnie zaniedbane – naprawmy najpierw czułość. Wydaje się, że gdy podzielimy Obrot na 5 przy zmianie KulkaX to gra powinna być nieco przyjaźniejsza dla ludzie nieobdarzonych nadludzkim refleksem 🙂

7_ruch_kulki_o_obrot_na_5

Wprowadźmy teraz przyspieszenie. W tym celu przyda się kolejna zmienna reprezentująca prędkość. Zgadnij jak ją nazwę… zgadza się – po prostu Predkosc

8_kulka_przyspieszenie

O! Niewielkie zmiany, ale wielkie efekty – fizyka gry została znacznie poprawiona. Jak widzisz mamy zmienną Predkosc do której dodajemy poprzednio używaną formułę. Dodawana do prędkości wartość musi być dość mała (dlatego podzieliłem Obrot na 100) bo w przeciwnym wypadku nasza kulka dość szybko osiąga bardzo duże prędkości. Spróbuj pozmieniać niektóre parametry i zobacz jak wpływają na grywalność.

Warunki decydujące o przegranej

Musimy dodać jakieś warunki, które utrudnią naszą grę bo obecnie możemy wylecieć kulką poza belkę, a następnie jak gdyby nic się nie stało ponownie na nią wrócić. Sprawdzajmy czy kulka znajduje się na belce poprzez kontrolę jej pozycji w osi X. Jeżeli zmienna KulkaX będzie pomiędzy -40, a 40 to znaczy że jest na belce. W przeciwnym razie przegrywamy, a kulka powinna zniknąć!

9_czy_kulka_jest_na_belce

Stwórzmy zmienną Przegrana. Zmienna ta stanie się prawdą, gdy kulka wyleci poza belkę.

10_ustaw_przegrana_na_prawda

Co po przegranej? Wyświetlimy napis “GAME OVER”.

game_over

Punktacja

Gra musi mieć jakiś element rywalizacji! Gdy udaje nam się utrzymywać kulkę na belce powinniśmy zdobywać punkty. Do tego będziemy potrzebowali nowej zmiennej, bloku naliczającego punkty oraz bloku, który będzie je wyświetlał.

12_punktacja

Sprawmy, by po przegraniu wyświetlały się zdobyte przez nas punkty.

13_punkty_po_przegranej

Rosnący poziom trudności

Obecnie mamy stały poziom trudności. Jeżeli będziemy dostatecznie zręczni to możemy bez problemu zdobyć baaardzo dużo punktów. Możemy to zmienić poprzez uzależnienie czułości myszki od punktacji. Spróbujmy coś pomajstrować. Obecna trudność jest określana przez poniższy blok.

14_trudnosc

Punkty narastają wraz z upływem czasu, więc gdy podzielimy Obrot na coraz większe Punkty to trudność będzie malała. My chcemy odwrotnego efektu więc pomnóżmy Obrot przez Punkty.

15_obrot_razy_punkty

Ups… teraz nasza gra w przeciągu sekundy robi się piekielnie trudna, a wręcz niemożliwa do grania. Musimy jeszcze podzielić punkty przez jakąś dużą liczbę – niech to będzie 10000.

16_Gotowa_mechanika_gry

Inne kontrolery

W tej grze możemy używać dowolnych kontrolerów takich jak na przykład potencjometr, czujnik światła, przycisk albo czujnik odległości. Wystarczy, że wybrany element podepniesz pod którekolwiek z wejść i zamiast Mysz X wybierzesz odpowiednie wejście robota.

17_Inne_kontrolery

Udźwiękowienie

Przydałyby się jakieś efekty dźwiękowe.

18_Dzwiek

Taki niewielki efekt dźwiękowy na pewno umili rozgrywkę, a jeżeli chciałbyś zbudować prawdziwą ścieżkę dźwiękową dla Balansującej Belki to zajrzyj do lekcji o zastosowaniu pętli w dźwiękach. No chyba, że przychodzi ci do głowy własna melodia?

ZOBACZ GOTOWY PROJEKT

O autorze scenariusza:

Tomasz Marczak

Tomasz Marczak

Pasjonat Arduino i majsterkowania. Absolwent elektrotechniki na Politechnice Gdańskiej. Lubi kreatywnych i inspirujących ludzi. Wielki fan seriali, książek popularnonaukowych i Elona Muska. Po godzinach programuje i niańczy swojego kota Lucka.