Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul presupune implementarea jocului Tetris, pe LCD. Jocul va avea mai multe nivele, de dificultate diferită. Am ales să realizez acest proiect deoarece, atunci când eram mic, îmi petreceam destul de mult timp jucând Tetris, fiind, la vremea respectivă, foarte captivat de acesta. Proiectul îmi amintește de perioada magică a copilăriei și de unul dintre jocurile mele preferate din acele vremuri. Jocul va reprezenta o metodă de relaxare, dar și un mod prin care să ne simțim din nou copii.
Pentru a controla mișcarea pieselor de Tetris voi folosi butoane. Informația încapsulată prin apăsarea unui buton va fi trimisă către microcontroller. Acesta va procesa informația și va afișa starea curentă a jocului pe LCD.
Lista pieselor
Numele piesei |
---|
Placă de bază |
Componente de bază |
Microcontroller ATmega324 |
Butoane |
Display Nokia 5110 |
Rezistențe electrice |
LED-uri |
Buzzer |
Placă de prototipare |
Schema Electrica
Fiecare piesa de tetris este formata din patru cuburi. Fiecare astfel de cub este reprezentat pe ecran prin intermediul a patru pixeli (deoarece reprezentarea unui cub printr-un singur pixel ar fi dus la o dimensiune prea mica a pieselor). Exista o variabila care retine tipul piesei curente (cea care este in miscare) si un vector de puncte (de dimensiune patru, intrucat orice piesa este formata din patru cuburi, deci patru coordonate) care memoreaza coordonatele fiecarui cub ce intra in componenta piesei. Fiecare punct este un element de tipul “struct Point”, avand doua campuri: “x” (abscisa) si “y”(ordonata). Miscarea unei piese presupune modificarea coordonatelor din acest vector de puncte. Pentru reprezentarea starii curente a jocului folosesc o matrice de valori de tipul “bool”. Daca pe o pozitie a matricei avem valoarea “true”, atunci la pozitia respectiva (pe ecran) se afla un cub al unei piese. Aceasta matrice este actualizata si afisata la fiecare pas. Pentru mutarea unei piese calculez pozitiile pe care le-ar avea fiecare cub component in urma mutarii, iar apoi verific daca aceste pozitii sunt deja ocupate (aceasta verificare se face prin intermediul matricei de pixeli descrisa mai sus). Daca cel putin o pozitie este ocupata, atunci mutarea nu poate fi efectuata (exista coliziune).
Jocul are trei niveluri. Cresterea dificultatii presupune cresterea vitezei pieselor, dar si marirea numarului de linii ce trebuie ocupate integral.
A fost un proiect foarte interesant, care m-a apropiat de lumea embedded. Am invatat sa lipesc componente pe placuta si sa le conectez in mod corespunzator. Imi place foarte mult sa ma joc, iar acum a fost pentru prima data cand am jucat un joc pe care eu l-am implementat (desi am reusit doar odata sa ajung la ultimul nivel). Realizarea acestui proiect a fost una dintre cele mai placute experiente din acesti ani de facultate.
Tetris - https://en.wikipedia.org/wiki/Tetris
ATmega324 - http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf