Celeste/PICO8

Typ_projektu
Arduino
Zdjecie główne
Krótki opis projektu

 

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.

Niezbędne elementy

1. Płytka Arduino UNO lub kompatybilna

2. Shield SIC Game Console Sprzęt

3.Komputer PC z zainstalowanym Arduino IDE..

Opis projektu

 

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.

kod programu

Ustaw odpowiedni język programowania (ostatnia ikona powyżej)

Tagi
celeste PICO - 8 A