This is an old revision of the document!


Snake

Autor: Toma Ștefan-Mădălin
Grupa: 333CC

Introducere

Proiectul constă intr-o implementare a clasicului joc de "Snake".
Jucătorul controlează un punct pe un plan bidimensional.
Pe măsură ce înaintează, lasă o urmă, asemănătoare cu un șarpe în mișcare.
Jucătorul pierde atunci când șarpele lovește granița ecranului sau pe sine.
Jucătorul încearcă să mănânce iteme lovindu-le cu capul șarpelui.
Fiecare element consumat crește lungimea șarpelui, astfel încât evitarea coliziunii cu sine devine progresiv mai dificilă.

Descriere generală

Functionalitati

User-ul dispune de 4 butoane prin intermediul carora poate sa controleze directia curenta a sarpelui.

La coliziunea sarpelui cu un item lungimea ii va creste cu o unitate.

La sfarsitul oricarui joc se va afisa score-ul final al jucatorului si se va astepta un input pentru a incepe un nou joc.

Schema Bloc

Hardware Design

Bill of Materials

Denumire Piesa Cantitate
Arduino Uno 1
Butoane 4
Matrice LED MAX7219 4
Fire Mama-Tata ?
Fire Tata-Tata ?
Rezistente 100 KΩ 5

Schema Breadboard

Schema Electrica

Software Design

Medii de dezvoltare:

  • Arduino IDE, VS Code
  • Fritzing - Schema electrica
  • Creately - Schema bloc

Se folosesc urmatoarele 2 librarii:

  • LEDMatrixMagic
    • o versiune stripped down a librariei LedControl
    • este folosita pentru interfatarea cu grid-ul de matrici led prin protocolul SPI
  • Snake (librarie proprie) contine implementarea claselor:
    • Game - o entitate care se ocupa de interpretarea input-ului, logica jocului de snake si rendare
    • Snake - o lista + o functie de inaintare pe directia “direction”
    • List - implementarea unei liste simplu inlantuite

Citirea si interpretarea inputului se face in functia loop(). Timer-ul 1 se ocupa cu verificarea restrictiilor jocului si automat de rendarea pe ecran la fiecare secunda. Procesului de rendare a fost optimizat prin pastrarea tuturor LED-urilor aprinse. Astfel singurele exceptii cand interactiunea cu interfata LEDMatrixMagic este necesara sunt:

  • un nou item este generat
  • la fiecare miscare a sarpelui
    • casuta in care se afla coada sarpelui se stinge
    • capul inainteaza intr-o noua casuta (exceptie cand casuta contine un item)

Rezultate Obţinute

:!: TODO

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

Concluzii

:!: TODO

Download

Repo Cod

:!: TODO

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.

Bibliografie/Resurse

pm/prj2022/fstancu/snake.1653416514.txt.gz · Last modified: 2022/05/24 21:21 by stefan_madalin.toma
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