Autorul poate fi contactat la adresa: Login pentru adresa
Snake++ reprezinta o varianta imbunatatita a clasicului joc Snake prin introducerea unor noi functionalitati precum:
Scopul proiectului este de a obtine un joc amuzant si relaxant. Am pornit de la varianta clasica Snake si consider ca proiectul este util pentru relaxarea studentilor(mai ales ca sesiunea se apropie cu pasi repezi).
Jucatorul poate controla sarpele folosind patru butoane(cate unul pentru fiecare directie: sus, jos, stanga, dreapta), iar jocul va fi afisat pe un LCD grafic. De asemenea, selectia nivelului si inceperea jocului se vor realiza tot prin intermediul butoanelor.
Lista de componente:
Am folosit ca mediu de dezvoltare SublimeText3. La inceput, jucatorul trebuie sa selecteze unul dintre cele trei nivele disponibile:
Dimensiunea initiala a sarpelui creste gradat. La fiecare 30 de puncte acumulate, sarpele va mai capata un “patratel” in corpul sau. Fiecare masa consumata(cercurile galbene de pe plasa de joc) inseamna 10 puncte castigate.
Exista si un item special(medicament - patratelele albastre) care reduc dimensiunea sarpelui cu un “patratel”. Desigur, acesta apare mai rar pe harta de joc comparativ cu celelalte item-uri.
Pentru a retine coordonatele sarpelui am folosit doi vectori(pos_x si pos_y). Directia initiala de miscare este SUD. La apasarea unui buton, rutina de intrerupere definita va face update directiei de deplasare, iar coordonatele sarpelui sunt actualizate ulterior in functia move_snake(). Aceasta sterge coada sarpelui(ultimul patratel din corpul sau) si adauga un nou patratel pentru a modifica coordonatele capului sarpelui.
In mod asemanator, am folosit vectorii obs_x si obs_y pentru a retine coordonatele la care randez obstacole. Acestea apar pe plansa la un anumit interval de timp si sunt generate la coordonate random, avand grija ca acestea sa nu se suprapuna cu peretii plansei, cu alte obstacole, cu item-ul medicament sau cu hrana sarpelui.
Hardware imbinat cu software
Pentru desenarea item-urilor am utilizat diverse functii ale controller-ului ILI9341, specific acestui model de LCD. Am utilzat diverse culori pentru a da un aspect mai simpatic jocului.
Am utilizat si un difuzor pentru a genera un sunet scurt in momentul in care sarpele mananca sau se trateaza cu un medicament.
Nu credeam ca acest proiect va ajunge vreodata intr-o stare functionala, dar aparent cu suficiente nopti pierdute orice este posibil!
Hardware-ul nu a fost niciodata pasiunea mea si acest lucru s-a reflectat cumva si in proiectul meu. Cu extrem de multa panica la fiecare componenta lipita/conectata, am reusit in cele din urma sa realizez hardware-ul necesar pentru a putea crea jocul Snake.
A fost un proiect interesant din care am invatat cum functioneaza impreuna hardaware-ul si software-ul si, in final, pot spune ca sunt mandra de rezultatele obtinute.
Laboratoare: http://cs.curs.pub.ro/wiki/pm/#