Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in realizarea jocului Tetris pe LCD. Scopul jocului este de a crea cat mai multe linii orizontale complete, fara goluri.Aceste linii vor fi formate din piese de joc de forme aleatorii ce cad de sus si pot fi miscate la stanga , la dreapta si pot fi rotite la 90 de grade. Cand o astfel de linie este creata, va disparea si scorul va creste. Dificultatea jocului va creste o data cu trecerea timpului prin cresterea vitezei de cadere a pieselor.
Scopul proiectului este acela de a aprofunda notiunile invatate la laborator prin realizarea unui joc distractiv.
Ideea de la care am pornit este cea din ultimul laborator in care am realizat implementarea a unui joc pe un LCD grafic, lucru ce mi s-a parut foarte interesant si distractiv.
Utilitate: Petrecerea timpului liber intr-un mod relaxant si util.
La pornirea jocului, va aparea un mesaj pentru a apasa un buton pentru confirmarea inceperii jocului in sine.
Vor incepe sa cada piese pe care jucatorul le poate misca pe directie orizontala folosind doua butoane pentru deplasare stanga, dreapta si le poate roti folosind doua butoane(unul pt a roti piesa la stanga si altul pt rotire la dreapta), un buton pentru a mari viteza cu care piesa cade si un buton de reset, cu scopul de a completa liniile, pentru a primi puncte. O linie completa va fi stearsa, iar nivelul liniilor de deasupra va scadea cu numarul de linii sterse. Va exista si un buton pentru resetarea jocului.
Pe masura ce timpul trece dificultatea jocului se mareste deoarece miscarea pieselor se va accelera. Jucatorul va pierde jocul in momentul in care LCD-ul se umple pe verticala.
In timpul jocului diferite sunete se vor auzi folosind buzzerul.
Schema bloc a proiectului:
Piesele necesare:
Pentru mediu de compilare si dezvoltare am folosit Programmers Notepad [WinAvr]. Am folosit bibliotecile pentru LCD Nokia 3310 de la Quantum Torque biblioteci ce sunt compatibile și cu LCD de Nokia 5110. Pentru încărcarea programului pe Microcontroller am folosit Bootloader HID, instalat pe Linux. Functionalitatea butoanelor: PB0 = resetarea jocului; PB1 = Rotirea piesei spre dreapta; PB4 = Rotirea piesei spre stanga; PB3 = Down cu viteza marita; PB2 = Right; PB5 = Left
Functia principala este 'play()' si se gaseste in fisierul lcd.c. Aceasta functie intoarce un scor, ce este calculat in functie de numarul de piese generate dar si in functie de numarul de linii sterse. Scorul este scris pe lcd pentru cateva momente dupa care se poate incepe un nou joc prin apasarea oricarui buton. Fiecare piesa este generata random si este construita din 4 patrate de baza, fiecare patrat fiind alcatuit din 16 pixeli si poate avea 4 pozitii in functie de cum sunt rotite. Dupa fiecare eveniment aparut (deplasare la stanga sau dreapta, rotirea piesei) se verifica daca noua pozitie a piesei se mai incadreaza in limitele ecranului sau daca nu face coliziuni cu alte piese iar in cazul in care nu este indeplinita una din conditii modificarea pozitiei nu mai are loc.
Biblioteci:
Surse
Un proiect foarte interesant, placut si distractiv din care am avut ce invata atat pe partea hardware cat si pe cea software.
Arhiva cu fisierele sursa: lungu_cosmin_robert_334cc.zip
Resurse Software:
Resurse Hardware: