This shows you the differences between two versions of the page.
|
pm:prj2024:avaduva:ioana.dabelea [2024/05/02 12:33] ioana.dabelea introducere proiect |
pm:prj2024:avaduva:ioana.dabelea [2024/05/27 16:51] (current) ioana.dabelea [Bibliografie/Resurse] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Snake Game ====== | ====== Snake Game ====== | ||
| + | * Nume: Dabelea Ioana-Viviana | ||
| + | |||
| + | * Grupa: 333CB | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| Line 7: | Line 10: | ||
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| + | Proiectul meu este dezvoltat pe o placuta Arduino UNO, avand ca si interfata grafica o matrice LED de 8*8. | ||
| - | <note tip> | + | Utilizatorul are control total cu ajutorul unui joystick, permițându-i să mute șarpele în orice direcție dorește: în jos, în sus, la stânga sau la dreapta. Un aspect interesant este că șarpele poate traversa marginile matricei, reapărând în câmpul vizual pe aceeași linie sau coloană, în funcție de direcția sa. |
| - | 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ă. | + | |
| - | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | În timpul jocului, o melodie simplă, specifică jocurilor arcade, însoțește acțiunea. De fiecare dată când șarpele mănâncă o bucată de hrană, se aude un sunet caracteristic. |
| - | </note> | + | |
| + | În cazul în care utilizatorul pierde, LED-urile se aprind secvențial până când întreaga matrice este acoperită, iar în fundal se aude o melodie. | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | <note tip> | + | ==Lista piese== |
| - | Aici puneţi tot ce ţine de hardware design: | + | * Placa de Dezvoltare Compatibila cu Arduino UNO R3 (ATmega328p + ATmega16u2) |
| - | * listă de piese | + | * Breadboard HQ |
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * MAX7219 LED Dot Matrix Module |
| - | * diagrame de semnal | + | * Joystick |
| - | * rezultatele simulării | + | * SD Card Reader |
| - | </note> | + | * Buzzer |
| + | |||
| + | ==Schema circuit:== | ||
| + | |||
| + | {{:pm:prj2024:avaduva:schema_circuit_snake.jpg?200|}} | ||
| + | |||
| + | ==Schem electrica:== | ||
| + | |||
| + | {{:pm:prj2024:avaduva:schema_electrica_snake.jpg?200|}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | Mediu de Dezvolate: Arduino IDE | ||
| - | <note tip> | + | Biblioteci Utilizate |
| - | Descrierea codului aplicaţiei (firmware): | + | * SD.h: Pentru interacțiunea cu cardul SD. |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * TMRpcm.h: Pentru redarea fișierelor audio de pe cardul SD. |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * SPI.h: Protocol de comunicație pentru cardul SD. |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * LedControl.h: Controlul afișajului LED de tip matrice. |
| - | * (etapa 3) surse şi funcţii implementate | + | ===== Descriere Implementare ===== |
| - | </note> | + | |
| + | Implementarea jocului a fost facuta in mai multi pasi: | ||
| + | |||
| + | * am creat structura sarpelui (doi vectori care contin coordonatele cozii pe OX si OY si doua variabile ) | ||
| + | * am gandit modul de deplasare al sarpelui, folosindu-ma de directa capului | ||
| + | * am randomizat locul unde apare "mancarea", pentru a creste dificultatea jocului | ||
| + | * cu ajutorul unui card SD am pastrat intr-un fisier date despre sesiunea de joc curenta (scor, timp, numar de schimbari de directie) | ||
| + | |||
| + | Funcții de Setup | ||
| + | * setup(): Funcția principală de setup care configurează pini, afișajul LED, poziția inițială a șarpelui și a mâncării. | ||
| + | * setupSnakePosition(): Setează poziția inițială a șarpelui random. | ||
| + | * setupFoodPosition(): Setează poziția mâncării într-o locație | ||
| + | * setupLedBoard(): Configurează afișajul LED. | ||
| + | * setupSpeaker(): Configurează modulul de sunet și verifică cardul SD. | ||
| + | * setupPins(): Configurează pinul joystick-ului. | ||
| + | |||
| + | Funcții de Control al Jocului | ||
| + | * playGameOverSong(): Redă sunetul specific când jocul s-a terminat. | ||
| + | * playFoodEatenSong(): Redă sunetul specific când șarpele mănâncă mâncarea. | ||
| + | * startGame(): Funcția principală care gestionează logica jocului, inclusiv verificarea coliziunilor, actualizarea direcției șarpelui, gestionarea mâncării și actualizarea afișajului. | ||
| + | * manageGameOver(): Verifică dacă șarpele s-a ciocnit cu propria coadă. | ||
| + | * manageSnakeOutOfBounds(): Asigură că șarpele revine pe partea opusă a afișajului dacă iese din limite. | ||
| + | * manageSnakeTailCoordinates(): Actualizează coordonatele cozii șarpelui. | ||
| + | * manageEatenFood(): Verifică dacă șarpele a mâncat mâncarea și actualizează scorul și dimensiunea șarpelui. | ||
| + | * setJoystickDirection(): Setează direcția șarpelui pe baza input-ului de la joystick. | ||
| + | * changeSnakeDirection(): Modifică direcția șarpelui pe baza valorii setate de joystick. | ||
| + | * showGameOverScreen(): Afișează ecranul de game over și resetează variabilele de joc. | ||
| + | * resetVariables(): Resetează variabilele jocului la valorile inițiale. | ||
| + | * showLed() și hideLed(): Aprinde sau stinge un LED specific de pe afișaj. | ||
| + | * drawSnake(): Desenează șarpele și mâncarea pe afișajul LED. | ||
| + | * writeGameStatistic(): Scrie in fisierul de pe cardul SD detalii despre sesiunea de joc. | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | Aici puteti vedea un mic demo al proiectului: |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | https://drive.google.com/file/d/1U9VoSO2mxLfDXYwqWxczZuNfrsVp1DXv/view?usp=sharing |
| - | </note> | + | |
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| ===== Download ===== | ===== Download ===== | ||
| - | <note warning> | + | soon.. |
| - | 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**. | + | |
| - | </note> | + | |
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| Line 57: | Line 92: | ||
| </note> | </note> | ||
| - | ===== Bibliografie/Resurse ===== | ||
| - | |||
| - | <note> | ||
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
| - | </note> | ||
| - | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||