This is an old revision of the document!


Snake Game

Introducere

  • Acest proiect reprezintă o implementare a clasicului joc Snake pe o placă Arduino.
  • Scopul jocului este de a controla un șarpe care se mișcă pe un ecran și de a mânca bucăți de hrană pentru a crește lungimea șarpelui, evitând coliziunile cu marginile ecranului sau cu corpul său.
  • Ideea de la care am porit a fost dorința de a reinterpreta un joc al copilăriei.
  • Consider că acest joc este util pentru a arăta cum se pot îmbina conceptele învățate la laborator pentru a implementa un joc mai complex.

Descriere generală

Cu ajutorul unui breadboard și al firelor, cele patru componente: plăcuța Arduino, joystick-ul, matricea cu leduri și buzzer-ul sunt conectate. Jucătorul va controla snake-ul cu ajutorul joystick-ului și va încerca să strângă cât mai multe puncte prin a mânca luminițele de pe traseu. Buzzer-ul va scoate un sunet la pierderea jocului care se va întâmpla dacă șarpele atinge marginile matricei.

Hardware Design

Componente hardware:

  1. Matrice de leduri
  2. Arduino Uno
  3. Buzzer
  4. Breadboard
  5. Fire
  6. Joystick
  7. MAX7219 Driver
  8. Potentiometru
  9. Ecran LCD

Software Design

  • Am implementat jocul în Arduino IDE
  • Am utilizat librăriile LedControl, LiquidCrystal, EEPROM
  • Am utilizat o structura pentru șarpele din joc, care salveaza potitiile capului, corpului, lungimea sa si directia.
  • Am utilizat o structura pentru mărul pe care trebuie să-l mănânce pentru a putea crește. După ce șarpele ajunge să ia un măr altul va apărea într-un alt loc random din matrice.

Actualizarea și Mișcarea Șarpelui:

  • Direcția șarpelui este controlată de valorile citite de la joystick (varXPin și varYPin). Dacă joystick-ul este mișcat într-o direcție, direcția șarpelui se schimbă corespunzător. Mișcarea șarpelui este realizată prin actualizarea poziției capului (head) pe baza direcției curente (dir). Dacă capul șarpelui se mută peste marginea matricei de LED-uri, poziția sa este ajustată pentru a apărea pe partea opusă (efect de teleportare).
  • Coliziunea cu sine: Verifică dacă coordonatele capului șarpelui coincid cu oricare parte a corpului său. Dacă da, jocul se resetează, iar jucătorul pierde o viață.
  • Coliziunea cu mărul: Dacă capul șarpelui ajunge la poziția mărului, șarpele crește în lungime, scorul este incrementat și un nou măr este generat la poziții aleatorii.
  • Matricea de LED-uri este actualizată pentru a afișa noua poziție a șarpelui și a mărului. Șarpele este desenat folosind array-ul pic, iar mărul este făcut să clipească pentru a fi mai vizibil.

Meniuri și Interfață:

  • Interfața jocului este realizată folosind un ecran LCD. Meniurile sunt navigate utilizând butonul joystick-ului. Există mai multe meniuri și submeniuri pentru opțiuni precum începerea jocului, setările, etc.

Funcții Importante:

  1. playGame(): Gestionează logica principală a jocului.
  2. showIntro(): Afișează introducerea jocului.
  3. showMenu(): Afișează meniul principal și permite navigarea prin opțiuni.
  4. Update(): Actualizează starea șarpelui și a mărului.
  5. Render(): Redă (desenează) jocul pe matricea de LED-uri.
  6. calculateDeltaTime(): Calculează timpul trecut între cadre pentru a controla viteza jocului.
  7. removeFirst(): Elimină prima parte a corpului șarpelui pentru a simula mișcarea sa înainte.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

2.05 - Alegerea temei proiectului

9.05 - Prezentarea pieselor pe care urma sa le utilizez

12.05 - Legarea pieselor hardware

13.05 - Intocmirea documentatiei pentru partea de hardware

16.05 - Prezentarea celui de al-doilea milestone

19.05 - 21.05 - Scrierea codului

23.05 - Prezentarea ultimului milestone

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/alucaci/maria.costea2604.1716471540.txt.gz · Last modified: 2024/05/23 16:39 by maria.costea2604
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