Projekt przedstawia grę platformową retro w stylu gier na konsolę Pico-8. Gra działa na mikrokontrolerze Arduino UNO z wykorzystaniem wyświetlacza OLED 128x64 piksele oraz shielda SIC Game Console. Rozgrywka polega na przeskakiwaniu między platformami w celu wyjścia z poziomu unikając przy tym kolców. Po uruchomieniu gracz pojawia się na ekranie startowym będącym jednocześnie planszą do nauki sterowania. Rozgrywka rozpoczyna się po wyjściu z mapy startowej.
1. Płytka Arduino UNO lub kompatybilna
2. Shield SIC Game Console Sprzęt
3.Komputer PC z zainstalowanym Arduino IDE..
OBSŁUGA WYŚWIETLACZA
Do wyświetlania elementów gry wykorzystywana jest biblioteka Adafruit SSD1306 – gra rysuje platformy i ściany jako prostokąty, kolce jako zygzaki, a gracz kontroluje postać o sylwetce człowieka.
ROZGRYWKA
Poziomy Gra ma wgrane 3 poziomy o różnie rozmieszczonych platformach, kolcach i wyjściu, oraz ekran startowy i końcowy z wynikiem.
Ekran początkowy
Na ekranie startwym znajduje się tytuł gry oraz twórcy. Napis PICO-A jest jednocześnie elementem mapy na którym można ćwiczyć sterowanie.
Ekran Końcowy
Na ekranie końcowym jest wyświetlany czas przejścia gry oraz liczba śmierci. Na tym ekranie też można się poruszać. Zasady wygranej/przegranej Do następnego poziomu się przechodzi poprzez dotarcie do wyjścia. Zakończenie gry polega na przejściu wszystkich poziomów. Śmierć następuje gdy postać dotknie kolców lub spadnie w przepaść. W momencie śmierci gracz zostaje przeniesiony na początek danego poziomu. Restart W dowolnym momencie rozgrywki można zresetować dany poziom naciskając naraz wszystkie przyciski kierunkowe a restart gry poprzez jednoczesne naciśnięcie wszystkich przycisków konsoli. Sterowanie ruch w poziomie - prawy/lewy przycisk kierunkowy skok - dolny boczny przycisk, przytrzymanie przycisku daje wyższy skok dash - górny boczny przycisk, dash jest wykonywany w kierunku obranym przyciskami kierunkowymi
DZIAŁANIE WAŻNYCH FUNKCJI
uint8_t getTile(int x, int y) - pobiera wartość danego pola ze skompresowanej mapy void levelStart(int num) - ustawia aktualny poziom oraz przenosi gracza na jego początek void readInput() - czyta wciśnięte przez użytkownika przyciski void movement() - odpowiada za ruch w zależności od wciśniętych przycisków oraz aktualnej pozycji na mapie void drawTimer() - wyświetla Timer void drawPlayer() - rysuje postać gracza oraz odpowiada za prostą animację ruchu void draw() - rysuje wyszystkie obiekty na ekranie void checkHitbox() - w zależności od pozycji gracza ustawia czy można skakać itp oraz sprawdza warunki śmierci i przejścia do następnego poziomu
NAPOTKANE TRUDNOŚCI
Mapa wa wymiary 64x32 i każde pole przechowuje 1 liczbę czyli mapa zajmuje 2kB pamięci. Na konsoli Pico-8 aktualna mapa jest przechowywana na pamięci RAM (Pico-8 ma 64kB RAMu). Arduino Uno ma jedynie 2kB RAMu więc żeby gra działałą płynnie mapy są przechowywane w pamięci Flash i są skompresowane do 2 bitów na komórkę żeby mapy zajmowały mniej pamięci a funkcja getTile dekompresuje i zwraca wartość przechowywaną w pojedynczej komórce co zajmuje mało RAMu.
Ustaw odpowiedni język programowania (ostatnia ikona powyżej)