Table of Contents

Laura-Adriana SAVU 332CA - Lovit si scufundat

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

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.

Descriere generală

Hardware Design

Lista componente:

Schema electrica

schema_lovit_si_scufundat.jpg

Software Design

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.

Rezultate Obţinute

placuta_laura.jpg

Concluzii

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.

Download

placuta.zip

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.