Endless runner - Antonia Tanase
Introducere
Proiectul este o implementare a unui joc Subway Surfer 2D.
Jocul consta in evitarea unor obstacole prin deplasarea player-ului in stanga sau dreapta, pana la atingerea liniei de finish.
Descriere generala
Pentru interfata utilizatorului va fi folosit un afisaj grafic LCD.
Utilizatorul va putea juca folosind doua butoane de directie (stanga, dreapta). Pentru tragerea de gloante in obstacole va fi folosit un senzor de atingere.
In timpul jocului se va aprinde un LED de culoare verde. Daca pierde jocul, se va aprinde un LED rosu.
Schema bloc
Hardware design
Piese necesare:
Arduino Uno
Ecran LCD 1.8” SPI
Fire
Rezistente
Breadboard
2 x LED RGB
Butoane
Senzor de atingere
Software design
Codul a fost implementat in ArduinoIDE. M-am folosit de bibliotecile SPI.h si TFT.h pentru LCD.
Functii:
drawRunner() : Afiseaza player-ul pe ecran - dreptunghiul verde
drawObstacle() : Afiseaza obstacolul pe ecran - dreptunghi rosu
updateRunner() : Actualizeaza pozitia player-ului - il misca in functie de apasarea butoanelor stanga/dreapta
updateObstacle() : Actualizeaza pozitia obstacolului, care se apropie de player. Cand iese din ecran, va fi repozitionat aleatoriu la inceput si creste scorul player-ului.
shootBullet() : Tragerea glontului e activata de atingerea senzorului. Glontul pleaca din pozitia player-ului in momentul tragerii.
drawBullet() : Afiseaza glontul pe ecran - un dreptunghi mic albastru.
updateBullet() : Acutualizeaza pozitia glontului, deplasandu-l spre directia din care vin obstacolele. Daca glontul iese din ecran este dezactivat. Daca glontul atinge obstacolul, obstacolul dispare (este repozitionat la inceput) si creste scorul
checkCollision() : Verifica daca player-ul se ciocneste de obstacol. In cazul coliziunii scade numarul de vieti. Cand se termina vietile, se afiseaza ecranul “Game Over” alaturi de scor.
displayScore() : Afiseaza permanent scorul si numarul de vieti in timpul jocului.
setup() : initializeaza ecranul TFT, configureaza pinii de intrare si iesire
loop() : Programul principal. Verifica in bucla daca senzorul tactil e atins pentru declansarea glontului. Actualizeaza player-ul, obstacolul, glontul si scorul si verifica coliziunile intre obiecte.
Download
Bibliografie/Resurse