Autorul poate fi contactat la adresa: Login pentru adresa
“A fost odata ca niciodata…” o vreme cand telefoanele mobile erau folosite pentru a primi si efectua apeluri si cam atat. Straniu scenariu, acum - cand vietile noastre se invart mai mult sau mai putin in jurul smartphone-ului care tine loc de telefon, agenda, aparat de fotografiat, are jocuri, internet etc etc etc.
Dar cine nu isi aminteste de batranul Nokia 1100 si unicul sau joc, Snake? Am ales acest proiect dupa ce am rasfoit paginile de proiecte din 2017, 16, 15… sfarsind prin a alege ideea de la care plecasem: conceptul jocului Snake clasic, dar implementat pe un ecran LCD cu diferite nivele de dificultate (incluzand viteze diferite, diferite harti cu obstacole, feedback sonor la anumite evenimente, alerte transmise pe LED-uri).
Scopul principal al jocului este de a trezi aceeasi nostalgie (in sensul bun al cuvantului) in colegii mei care probabil ma vor suporta plangandu-ma de-a lungul intregului proces si, desigur, de a aprofunda cunostintele acumulate la laboratoarele de PM.
Lista de componente hardware:
Am ales ca mediu de dezvoltare Programmers Notepad [WinAVR]. Am pornit implementarea software de la exemple mici, bucati de cod din laborator pentru testarea componentelor si exemple de folosire a ecranului LCD.
Jocul are 3 nivele de dificultate, dintre care utilizatorul isi poate alege la inceput. Cele 3 nivele difera prin faptul ca hartile contin din ce in ce mai multe obstacole.
Algoritmul jocului este unul simplu:
In plus, am introdus pe harta un tip de item special - otrava, care odata administrata scade scorul total. Acesta isi schimba pozitia la un interval de timp dat.
Generarea mancarii si a otravii se face la coordonate random, verificand totusi ca aceste coordonate sa nu se suprapuna zidurilor.
Am retinut sarpele in doi vectori de coordonate (x, y), pe care ii parcurg numai in primele <lungimea sarpelui> pozitii. Harta nivelului este retinuta intr-o matrice de aparitii in care marchez zonele cu obstacole.
Am implementat urmatoarele functii (apelate in aceasta ordine pentru fiecare sesiune de joc):
Interactiunea cu componentele hardware
Evenimentele jocului sunt notificate prin LED-ul de pe PCB si difuzor:
Ambele evenimente vor fi insotite si de aprinderea LED-ului.
In ceea ce priveste afisajul LCD, jocul este foarte colorat, aceasta posibilitate fiind si motivul pentru care am ales un LCD grafic, intrucat jocul snake clasic era destul de tristut si anost pe un ecran de tip Nokia.
Pot spune fara sa exagerez ca am urat cu pasiune acest proiect si m-a ingrozit timp de multe saptamani ideea realizarii lui. Cu toate acestea, odata ce am inceput lucrul propriu-zis la el, luat pe bucati, cu pasi mici, am realizat ca nu este nimic atat de SF precum credeam: de la lipirea placii de baza, la conectarea altor componente hardware si pana la manipularea acestora din soft - toate au fost realizabile.
Tragand linie mi s-a parut un proiect super interesant si simpatic, mai ales ca am avut ocazia sa plec de la un concept simplu pe care am putut sa il complic si sa il personalizez cum am vrut, ajungand sa imi depasesc asteptarile de la inceputul semestrului.