This is an old revision of the document!
Jocul 2048
Petrache Gabriela Andreea, 332CA
Introducere
Proiectul implementează jocul 2048, un joc de puzzle cunoscut. Jocul se desfășoară pe o tablă de dimensiune 4×4, pe care se află piese cu valori între 2 și 2048.
La fiecare mutare, jucătorul poate alege să mute toate piesele de pe tablă într-una din cele patru direcții: sus, jos, stânga sau dreapta, cu ajutorul unui joystick. Dacă două piese cu aceeași valoare se ciocnesc, ele se combină într-o singură piesă cu valoarea dublă.
Scopul jocului este de a obține o piesă cu valoarea 2048, iar jocul se termină atunci când nu mai există mutări posibile sau când jucătorul a obținut piesa cu valoarea 2048.
Descriere generală
Jocul se va juca cu ajutorul unui joystick, care va fi conectat la placa de dezvoltare. Există butoane pentru resetarea jocului și pentru oprirea/pornirea muzicii de fundal, care iese din buzzer. Jocul va fi afișat pe un display LCD de 1.3 inch.
Hardware Design
Schematica proiectului
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare: platform.io
librării şi surse 3rd-party: Bibliotecile Adafruit_GFX, Adafruit_ST7735
Descrierea functiilor implementate
addRandomTile(): Funcție care adaugă o nouă “plăcuță” într-o poziție aleatoare pe tabla de joc. O nouă plăcuță cu valoarea 2 sau 4 este adăugată într-o poziție aleatoare după fiecare mutare, cu probabilitate de 90%, respectiv 10%.
moveLeft()/moveRight()/moveUp()/moveDown(): Funcții care mută toate “plăcuțele” de pe grila de joc la direcția specificată, conform regulilor jocului.
bool isGameOver(): Funcție care verifică dacă s-a terminat jocul, adică dacă nu mai sunt mutări posibile.
void drawGameOverScreen(): Funcție care desenează ecranul de game over și face buzzer-ul să scoată un sunet.
Rezultate Obţinute
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF