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

Listă de piese:

  • Modul microcontroler universal Arduino Uno R3
  • Afișaj grafic 128x160px
  • Modul Joystick
  • Modul cu buton
  • Buzzer pasiv

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

  • setup(): Funcție specială în Arduino care este apelată o singură dată la pornirea plăcii pentru a inițializa ecranul și matricea de joc.
  • loop(): Funcție specială în Arduino care este apelată în mod repetat după ce setup() se termină, este folosită pentru a gestiona logica jocului și a actualiza ecranul.
  • initializeGrid(): Funcție care inițializează matricea de joc.
  • 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%.
  • drawGrid(): Funcție care desenează grila de joc pe ecranul TFT.
  • drawTile(int x, int y, int value): Funcție care desenează o “plăcuță” cu o anumită valoare într-o anumită poziție pe grila de joc.
  • moveLeft()/moveRight()/moveUp()/moveDown(): Funcții care mută toate “plăcuțele” de pe grila de joc la direcția specificată, conform regulilor jocului.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

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

  • - 4 mai - introducere + componente
  • - 16 mai - hardware design

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/mdinica/gabriela.petrache.1716747837.txt.gz · Last modified: 2024/05/26 21:23 by gabriela.petrache
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0