Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 ​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 proiectului vostru: + 
-  * ce face +Ideea mea pornit ​de la dorința de a recrea o experiență clasică de joc într-un mod simplu ș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 fost ideea de la care aţi pornit +
-  * de ce credeţi că este util pentru alţii ş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 joystickpermițându-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 vostruatât software cât ş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țiuneaDe 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, etcUn 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>​ 
pm/prj2024/avaduva/ioana.dabelea.1714638413.txt.gz · Last modified: 2024/05/02 11:26 by ioana.dabelea
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