This shows you the differences between two versions of the page.
pm:prj2024:avaduva:ioana.dabelea [2024/05/02 11:26] ioana.dabelea created |
pm:prj2024:avaduva:ioana.dabelea [2024/05/27 16:51] (current) ioana.dabelea [Bibliografie/Resurse] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Nume proiect ====== | + | ====== Snake Game ====== |
+ | * Nume: Dabelea Ioana-Viviana | ||
+ | |||
+ | * Grupa: 333CB | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | <note tip> | + | Proiectul meu, Snake Game, se bazeaza pe un joc clasic și distractiv în care jucătorul controlează un șarpe și încearcă să mănânce cât mai multe bucăți de hrană pentru a crește lungimea șarpelui său. Scopul jocului este să eviți să te lovești de propriul tău corp, în timp ce încerci să obții un scor cât mai mare posibil. |
- | Prezentarea pe scurt a proiectului vostru: | + | |
- | * ce face | + | Ideea mea a pornit de la dorința de a recrea o experiență clasică de joc într-un mod simplu și distractiv, care să amintească de nostalgica eră a jocurilor arcade. Astfel, utilizatorul poate sa ia o pauza de la viata agitata de zi cu zi si sa se relaxeze. |
- | * 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ă ===== | ||
+ | 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 | ||
+ | |||
+ | Biblioteci Utilizate | ||
+ | * SD.h: Pentru interacțiunea cu cardul SD. | ||
+ | * TMRpcm.h: Pentru redarea fișierelor audio de pe cardul SD. | ||
+ | * SPI.h: Protocol de comunicație pentru cardul SD. | ||
+ | * LedControl.h: Controlul afișajului LED de tip matrice. | ||
+ | ===== Descriere Implementare ===== | ||
+ | |||
+ | 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) | ||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | * (etapa 3) surse şi funcţii implementate | ||
- | </note> | ||
+ | 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 60: | 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> |