Dino Game 🦖
Introducere
Descriere
Proiectul reprezintă o implementare a jocului dezvoltat de Google pentru browser-ul Google Chrome. Acesta apare în momentul în care nu există conexiune la internet.
Jucătorul este reprezentat de caracaterul Lonely T-Rex creat de Sebastien Gabriel, Alan Bettes și Edward Jung.
Flow-ul jocului
Jocul începe printr-un sunet reprezentativ, iar la apăsarea unui buton se afișează harta.
Personajul se deplasează încontinuu de-a lungul hărții, iar la apăsarea butonului sare. Scopul este ca jucătorul să supraviețuiască cât mai mult timp posibil, evitând toate obstacolele ce pot să apară pe parcurs.
Jocul conține trei moduri, cu următoarele funcționalități:
primul mod reprezintă jocul normal, unde utilizatorul deține controlul complet
al doilea mod este unul ghidat în care i se sugerează utilizatorului când ar trebui să sară în funcție de lumina unor LED-uri astfel:
dacă LED-ul roșu este aprins, trebuie să sară
dacă LED-ul verde este aprins, nu există niciun obstacol în fața sa, deci ar trebui să-și mențină poziția
al treilea mod este unul automat în care utilizatorul nu mai interacționează cu jocul
În cazul în care personajul atinge un obstacol, jocul se încheie, eveniment ce este semnalat inițial prin sunetul acesta emis de buzzer, urmat de afișarea scorului pe ecranul LCD-ului.
Utilitate
Consider că acest joc interactiv este o modalitate de a aprofunda conceptele de la laboratorul de PM și de a pierde timpul.
Schema bloc
Hardware Design
Componente
Nume | Număr Piese |
Arduino | 1 |
LCD I2C | 1 |
Pushbutton | 2 |
Piezo | 1 |
Rezistență 100 Ω | 1 |
Rezistență 220 Ω | 3 |
LED | 2 |
Breadboard | 1 |
Schema Electrică
Circuit Design
Software Design
Mediul de dezvoltare:
Librării folosite:
-
-
lcd.begin() → inițializează LCD-ul
lcd.clear() → golește ecranul LCD-ului de carcatere
lcd.print() → afișează caractere pe ecranul LCD-ului
În cadrul implementării mi-am definit mai multe funcții, printre care:
drawDinoJump() - aceasta simulează săritura pe care o face caracterul jocului peste un obstacol
drawDinoWalk() - aceasta modifică aspectul caracterului pentru a conferi impresia unei deplasări continue de-a lungul hărții
startGame() - funcție care face inițializările necesare pentru LCD
graphics() - funcție care desenează caracterul
objectRandom() - această funcție inserează un nou obiect și face translația celor existente pentru a face lor unui nou obstacol și pentru a crea iluzia de mișcare
detect() - funcție care detectează coliziunile dintre caracter si obstacole
startGameMusic() - această funcție reproduce pe buzzer melodia de la începutul jocului
over() - această funcție reproduce pe buzzer melodia de la finalul jocului și afișează scorul final
get_mode() - aici se stabilește modul de joc în funcție de valoarea numerică a variabilei “mode”
Rezultate Obţinute
Demo cu funcționalitatea proiectului
Concluzii
Proiectul m-a ajutat să aprofundez conceptele studiate la laboratoarele de PM, să înțeleg importanța protocolului I2C, dar cea mai mare provocare a reprezentat-o partea de software.
Download
Arhiva ce conține codul-sursă al proiectului, precum și librăriile necesare poate fi descărcată de aici.
Jurnal
18.04.2022 → alegerea proiectului
21.04.2022 → schema bloc
-
25.05.2022 → achiziționare piese
26-27.05.2022 → implementare
Bibliografie/Resurse