This is an old revision of the document!
Autor: Cristescu Cristian
Grupa: 335CA
Proiectul reprezintă o varianta minimalistă a jocului Snake, un jucător controlează un șarpe sub forma unei linii
în mișcare, care se mărește pe măsură ce jucatorul colecteaza mere, scopul fiind acela de a rezista cât mai mult
până la lovirea unui perete sub forma de obstacol. Am ales acest joc deoarece este printe primele jocuri încercate
de mine, iar cerințele sale corespund acestui tip de proiect. Utilitatea acestuia în prezent nu este una sugestivă,
dar consider că ,în funcție de dificultate, te obligă ca utilizator să inveti să menții un nivel de concentrare ridicat
si iți antrenează anumite reflexe.
Pentru realizarea funcționalității, se va folosi un modul analog joystick care are rolul de a muta sarpele
în toate directiile, sus-jos, stanga-dreapta în timp ce segmentul corpului sau este în continua translație
într-un sens. Display-ul care va afișa simularea va fi un modul cu matrice de LED-uri bazat pe un driver
max7219 conectat la alte cateva componente cum ar fi rezistenta, condensatoare, pin headers.
Implementarea am realizat-o in VSCode cu ajutorul extensiei PlatformIO, ce permite lucrul cu module
si biblioteci pentru Arduino. Bibliotecile utilizate sunt:
Simularea jocului se desfasoara in functiile setup() si loop():
Realizeaza initializarile pinilor, ledurilor de pe matrice si de a recalibra pozitia de pornire
a Analog Joystickului si de stabili pozitia sarpelui pe ecran.
Scorul va fi afisat secvential la serial monitor, urmand ca apoi sa se genereze mancarea in functie
de pozitiile segmentului sarpelui. In continuare, se vor prelua inputurile din stick si se stabileste
urmatoarea directie, verificand in acelasi timp daca sensul ales este la 180 de grade fata de cel
precedent pentru ca respectiva “coliziune” sa fie invalida si jocul sa mearga mai departe. Ulterior,
se vor prelucra datele jocului, se actualizeaza lungimea sarpelui, se va verifica daca jocul s-a finalizat,
se vor aprinde si stinge ledurile secvential, generand miscarea pe ecran. Buzzerul se va activa dupa ce marul
a fost mancat si dupa ce translatia sarpelui s-a realizat. La finalul unui “frame” din loop, se verifica daca
jocul s-a castigat sau pierdut, in acest caz, reinitializandu-se toate variabilele din joc, iar ecranul
“va clipi” de 5 ori.