Autorul poate fi contactat la adresa: Login pentru adresa
Motivul pentru care am ales sa construiesc acest joc este pentru ca imi aminteste de copilaria mea, in care obisnuiam sa il joc.
Lovit si scufundat este un joc in care un jucator trebuie sa ghiceasca aranjarea submarinelor adversarului pentru a le scufunda. In acest caz adversarul va fi reprezentat de microcontroller, care va genera random o aranjare a submarinelor pentru a fi ghicite de jucator. Se pune la dispozitie o matrice de 5×5 leduri care sa semnaleze jucatorului daca locul indicat de el reprezinta locatia unui submarin sau nu. Jucatorul are la dispozitie cinci butoane pentru a indica linia si apoi coloana unde vrea sa verifice existenta unui submarin. In caz de succes ledul indicat se va aprinde cu rosu pentru a indica lovitura unui submarin, iar in caz contrar se va aprinde albastru pentru a indica apa.
Regulile jocului:
Castigarea jocului va fi indicata de un led care se va aprinde albastru in partea de sus a placii, in caz contrar se va aprinde rosu. Exista un numar maxim de mutari pe care jucatorul le are la dispozitie pentru a castiga jocul.
Lista componente:
Pentru dezvoltarea codului am folosit Programmer's Notepad. Am folosit o matrice care sa retina configuratia ledurile. Aceasta este initial 0. Pentru a genera o aranjare random folosesc atat pentru pozitionare (orizontal, vertical) cat si pentru pozitionarea in cadrul matricei, functia random. In momentul generarii acestor valori, verific daca ele sunt valide, daca nu exista in imediata vecinatate un alt submarin, astfel incalcandu-se regula cu submarinele care nu se pot afla unul langa celalalt. In cazul in care datele sunt invalide, repet generarea pana in momentul in care voi obtine niste coordonate valide. In matrice pozitiile pe care se afla submarine sunt indicate de prezenta valorii 1.
Jucatorul va trebui sa apese doua butoane pentru a indica locatia ledului. La apasarea primului buton retin linia, iar la a doua apasare aprind ledul caruia ii corespunde pozitia indicata. De fiecare data cand aprind un led, decrementez numarul de mutari posibile. De fiecare data cand un este nimerit un led voi pune in matrice valoarea 2, si voi decrementa numarul de casute care raman nelovite. Motivul pentru care modific valoarea din 1 in 2 este pentru a se evidentia cazul in care se loveste un submarin care nu a fost lovit inainte sau unul care fusese ghicit anterior.
Cand numarul de mutari il depaseste pe cel maxim, jucatorul va pierde, iar in momentul in care numarul de casute ramase nelovite va fi zero, jucatorul va castiga.
In implementare am folosit doua functii, una pentru initializare, care va fi responsabila cu generarea matricei, si cea de-a doua pentru a implementa logica jocului.
Mi-a facut placere sa lucrez la acest proiect, mi s-a parut o experienta foarte utila. In ciuda dificultatilor intalnite pe parcurs, proiectul functioneaza conform specificatiilor.