This shows you the differences between two versions of the page.
pm:prj2023:vstoica:subwaysurfer [2023/05/10 09:05] cristina.tanase1501 created |
pm:prj2023:vstoica:subwaysurfer [2023/05/29 00:42] (current) cristina.tanase1501 [Download] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ======Subway surfer====== | + | ======Endless runner - Antonia Tanase====== |
=====Introducere===== | =====Introducere===== | ||
Line 12: | Line 12: | ||
Pentru interfata utilizatorului va fi folosit un **afisaj grafic LCD**. | Pentru interfata utilizatorului va fi folosit un **afisaj grafic LCD**. | ||
- | Utilizatorul va putea juca folosind doua **butoane** de directie (stanga, dreapta). Pentru restart va fi folosit un **senzor de atingere**. | + | Utilizatorul va putea juca folosind doua **butoane** de directie (stanga, dreapta). Pentru tragerea de gloante in obstacole va fi folosit un **senzor de atingere**. |
- | Daca jucatorul ajunge la FINISH, se vor aprinde **leduri** de culoare verde. Daca pierde jocul, se vor aprinde **leduri** rosii. | + | In timpul jocului se va aprinde un **LED** de culoare verde. Daca pierde jocul, se va aprinde un **LED** rosu. |
=====Schema bloc===== | =====Schema bloc===== | ||
Line 30: | Line 30: | ||
* Senzor de atingere | * Senzor de atingere | ||
+ | {{:pm:prj2023:vstoica:pm_schema01.png?400|Schema electrica}} | ||
+ | {{:pm:prj2023:vstoica:pm_schema02.png?450|Schema}} | ||
+ | |||
+ | =====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. | ||
+ | |||
+ | {{:pm:prj2023:vstoica:diagramapm_.png?450|Schema}} | ||
+ | |||
+ | ===== Download ===== | ||
+ | Surse: {{:pm:prj2023:vstoica:endless_antoniatanase.zip|Endless_game}} | ||
+ | ===== Bibliografie/Resurse ===== | ||
+ | |||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |