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:
Matrice de leduri
Arduino Uno
Buzzer
Breadboard
Fire
Joystick
MAX7219 Driver
Potentiometru
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
- playGame(): Gestionează logica principală a jocului.
- showIntro(): Afișează introducerea jocului.
- showMenu(): Afișează meniul principal și permite navigarea prin opțiuni.
- Update(): Actualizează starea șarpelui și a mărului.
- Render(): Redă (desenează) jocul pe matricea de LED-uri.
- calculateDeltaTime(): Calculează timpul trecut între cadre pentru a controla viteza jocului.
- 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