This is an old revision of the document!
Proiectelul simuleaza jocul SNAKE.io, disponibil online. Cei doi jucatori pot controla serpii de culoare verde respectiv roz prin intermediul celor doua stickere analogice. Pentru fiecare serpisor exista un buzzer asignat care va scoate sunete de fiecare data cand serpii vor lua contact cu hrana disponibila random pe harta jocului. Scorul pentru fiecare jucator poate fi vizibil in partea de sus a ecranului, in stanga respectiv dreapta. Scopul jocului este ca jucatorii sa-l forteze pe adversar sa ii ciocneasca. Sarpele care ciocneste celalat sarpe, pierde, iar la finalul jocului pe ecran va fi afisat un mesaj informativ ce anunta castigatorul jocului. Daca cei doi serpi se ciocnesc frontal, atunci jocul se termina la egalitate.
Pentru realizarea proiectului am folosit urmatoarele componente:
Programul incepe prin generarea celor 2 serpisor. Dimensiunea serpilor este masurata in pixeli. La inceput fiecare sarpe are dimensiunea de 11 pixeli, urmand ca aceasta sa se mareasca de fiecare data cand serpii “mananca” ceva. Pentru implementarea software am folosit bibliotecile:
Pentru implementarea miscarii serpilor si maririi acestora am definit o structura de tip list, respectiv coada pentru miscarea lor. Fiecare miscare noua, schimbare de directie este introdusa in coada. Celulele au obligatia ca la fiecare schimbare de pozitie, sa verifice daca cumva trebuie sa modifice directia de miscare, parcurgand coada. Avand in vedere ca miscarea celulelor se face in ordine, de la cap spre coada sarpelui, fiecare element din coada va retine ultima celula care a efectuat mutarea. Pentru partea de rewards, de asemenea am implementat o lista. Sunt maxim de 10 reward-uri ce se pot genera odata la 3 secunde. In momentul in care s-au obtinut 10 reward-uri pe tabla de joc, generarea se opreste pana cand cel putin un reward este capturat de unul din serpi. Jocul se incheie cand are loc o coliziune dintre doi serpi, pierzator fiind sarpele ce ciocneste cu capul celalat sarpe. In caz ca cei doi se ciocnesc cap in cap, rezulta egalitate. Implementarea este non-blocanta, iar miscarea serpilor se face treptat, in functie de timpul petrecut in joc.
Cod sursa pentru implementare + schema realizata in Fritzing