This shows you the differences between two versions of the page.
|
pm:prj2024:mdinica:gabriela.petrache [2024/05/04 13:42] gabriela.petrache |
pm:prj2024:mdinica:gabriela.petrache [2024/05/26 21:59] (current) gabriela.petrache [Download] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Jocul 2048 ====== | ====== Jocul 2048 ====== | ||
| + | Petrache Gabriela Andreea, 332CA | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | <note tip> | + | Proiectul implementează jocul 2048, un joc de puzzle cunoscut. Jocul se desfășoară pe o tablă de dimensiune 4x4, pe care se află piese cu valori între 2 și 2048.\\ |
| - | Prezentarea pe scurt a proiectului vostru: | + | 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ă. \\ |
| - | * ce face | + | 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. |
| - | * care este scopul lui | + | |
| - | * care a fost ideea de la care aţi pornit | + | |
| - | * de ce credeţi că este util pentru alţii şi pentru voi | + | |
| - | </note> | + | |
| ===== Descriere generală ===== | ===== 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. \\ | ||
| + | \\ | ||
| + | {{ :pm:prj2024:mdinica:diagrama.png?600 |}} | ||
| + | ===== Hardware Design ===== | ||
| <note tip> | <note tip> | ||
| - | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | Listă de piese: |
| + | * Modul microcontroler universal Arduino Uno R3 | ||
| + | * Afișaj grafic 128x160px | ||
| + | * Modul Joystick | ||
| + | * Modul cu buton | ||
| + | * Buzzer pasiv | ||
| - | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | ||
| - | </note> | ||
| - | ===== Hardware Design ===== | ||
| - | <note tip> | ||
| - | Aici puneţi tot ce ţine de hardware design: | ||
| - | * listă de piese | ||
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | ||
| - | * diagrame de semnal | ||
| - | * rezultatele simulării | ||
| </note> | </note> | ||
| + | **Schematica proiectului** | ||
| + | |||
| + | {{:pm:prj2024:mdinica:2048_sch.png?700|}} | ||
| + | {{:pm:prj2024:mdinica:2048_hww.png?500|}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 32: | Line 35: | ||
| <note tip> | <note tip> | ||
| Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * mediu de dezvoltare: platform.io |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * librării şi surse 3rd-party: Bibliotecile Adafruit_GFX, Adafruit_ST7735 |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| </note> | </note> | ||
| + | ** 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 ===== | ===== Rezultate Obţinute ===== | ||
| <note tip> | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | [[https://youtu.be/jBrJPpIRGsY|Videoclip Demo]] |
| + | |||
| + | [[https://github.com/gabrielapetrache/Jocul-2048/tree/main | Repository Github]] | ||
| </note> | </note> | ||
| ===== Concluzii ===== | ===== 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 ===== | ===== Download ===== | ||
| <note warning> | <note warning> | ||
| - | 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ă ;-). | + | {{:pm:prj2024:mdinica:2048_game.zip|}} |
| - | + | ||
| - | 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**. | + | |
| </note> | </note> | ||
| Line 57: | Line 75: | ||
| <note tip> | <note tip> | ||
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
| - | </note> | ||
| - | ===== Bibliografie/Resurse ===== | + | * - **4 mai** - introducere + componente |
| - | + | * - **16 mai** - hardware design | |
| - | <note> | + | * - **26 mai** - finalizare proiect |
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
| </note> | </note> | ||
| - | |||
| - | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||