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

Concluzii

:!: TODO

Download

Bibliografie/Resurse

pm/prj2022/fstancu/snake.txt · Last modified: 2022/05/31 17:19 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