Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul constă în implementarea jocului de strategie single-player Minesweeper cu afișare pe LCD și control din butoane.
Scopul jocului este reprezentat de golirea căsuțelor prezente pe ecran prin apăsarea succesiva a câte unei casuțe. Fiecare căsuță poate conține o bombă sau
poate fi liberă. În cazul selectării unei bombe, jocul se sfârșește iar buzzer-ul va reda un sunet specific. Nivelul se termină cu succes la selectarea
tuturor căsuțelor fără a fi selectat vreo bombă, iar buzzerul va reda un sunet specific pentru victorie.
Jocul este pe mai multe nivele, complexitatea fiecărui nivel superior fiind dată de creșterea numărului de bombe.
Am ales să implementez acest joc deoarece este unul cu un puternic impact asupra perioadei copilăriei mele. În vremurile de atunci, utilizatorii nu erau
obișnuiți cu interfața grafică si mouse-ul iar jocul a fost gândit să îi învețe pe utilizatori să fie preciși și rapizi atunci când foloseau butoanele
principale ale mouse-ului.
Jucătorul va avea la dispoziție 6 butoane de control: 4 butoane pentru deplasare (sus, jos, stânga, dreapta), un buton pentru selectare și un buton pentru marcarea căsuței cu flag. Flag-ul este utilizat pentru a marca o căsuță în care intuim că exisă bombă. Afișarea se va realiza prin intermediul LCD-ului.
Listă de piese:
Schema electrica:
Ca mediu de dezvoltare am utilizat WinAVR si ca IDE Microsoft Visual Studio. Am utilizat o biblioteca gata implementata cu mici modificari pentru a putea interactiona cu LCD-ul. Am pornit de la cod din laboratoare pentru a reda sunete pe buzzer.
Am utilizat o structura pentru a retine informatiile utile fiecarei celule. Pentru fiecare celula sunt retinute urmatoarele informatii: numarul de bombe adiacente, ce e initializat cu -1, culoarea fundalului celulei, ce e initializata cu alb, coordonatele x si y ale coltului stanga sus corespunzator pentru afisarea casutei pe ecranul LCD-ului si o variabila ce retine daca celula contine bomba, variabila ce e initializata cu 0. Astfel retinem casutele de pe ecran intr-o matrice de
celule sub forma structurii de mai sus.
Pentru generarea aleatoare a bombelor am generat utilizand functia random, pozitii x si y si am verificat de fiecare data ca in casuta respectiva sa nu
existe bomba.
Jocul are 5 nivele, complexitatea fiind data din cresterea numarului de bombe cu 2 intre doua nivele consecutive. Daca jucatorul pierde un nivel intermediar, jocul se reia de la primul nivel.
Jucatorul finalizeaza un nivel prin apasarea tuturor casutelor inafara de cele ce contin bombe. In cazul trecerii la urmatorul nivel, se afiseaza un mesaj corespunzator, se reda un sunet pe buzzer si se incrementeaza numarul de bombe cu 2. In cazul apasarii pe o bomba, jocul se ia de la inceput, cu numarul minim de bombe si buzzerul reda un sunet iar pe ecran se va afisa un mesaj corespunzator si locatiile unde exista bombe.
Proiectul a fost o experienta placuta, interesanta si utila. Am consolidat multe cunostinte pe parcursul implementarii. Am invatat sa conectez si sa interactionez cu un LCD grafic dar si cu un joystick.
Arhiva cod : cojocaru_miruna.zip