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.
  • 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

În concluzie, acest proiect a fost o modalitate excelentă de a învăța și de a aplica cunoștințele despre programare, hardware și interacțiunea utilizatorului într-un mediu practic și distractiv.

Download

Jurnal

  • - 4 mai - introducere + componente
  • - 16 mai - hardware design
  • - 26 mai - finalizare proiect

pm/prj2024/mdinica/gabriela.petrache.txt · Last modified: 2024/05/26 21:59 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