Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul are la baza cunoscutul joc video Tetris ce foloseste un LCD Nokia.
<fc #0000FF>Tetris</fc> (în rusa: Тетрис) este un joc video creat de Alexei Pajitnov in iunie 1985. Numele acestui joc provine din grecescul tetra si face referire la faptul ca toate piesele sunt formate din patru patratele, si tenis, care era jocul preferat al acestui rus. Jocul a cunoscut o adevarata explozie in tarile est-europene, odata cu aparitia jocurilor electronice de mana, generand o isterie si dependenta. Piesele jocului se numesc tetrimino si sunt alcatuite din 4 blocuri in forma de patrat. In suprafata de joc se pozitioneaza o secventa aleatoare de astfel de piese.
Scopul jocului este de a aranja piesele in spatiul de joc astfel incat pe o linie orizontala sa nu existe niciun loc liber. In momentul in care se obtine o linie orizontala completa aceasta va disparea si celelalte blocuri vor cobori, iar jucatorul va acumula un punctaj. Piesele pot fi mutate in dreapta, in stanga sau pot fi rotite pentru a le potrivi cat mai bine. Daca o piesa a atins marginea de jos a ecranului sau marginea de sus a altei piese, aceasta se va opri acolo. Când piesele ating marginea de sus a ecranului si nu mai au loc alte piese, jocul se incheie.
Ideea de la care am pornit a fost o amintire din copilarie in care ma jucam acest joc pe calculator, dar si pe dispozitivele foarte populare pe atunci, numite Brick Game. Acesta era cel mai jucat joc de mine si prietenii mei, desi continea mai multe jocuri interesante.
Tetris este un joc in care un jucator trebuie sa plaseze piesele cat mai eficient pentru a nu aparea spatii goale intre ele.
La formarea unei linii orizonatale complete aceasta va disparea. Jucatorul va putea muta piesele folosind doua butoane (<fc #FF0000>Left</fc> si<fc #FF0000> Right</fc>), fiind permisa deplasarea stanga/dreapta. Aceste modificari vor aparea pe ecranul LCD. La aparitia unui eveniment important (alegere viteza, sfarsit de joc si altele) buzzerul va emite un anumit sunet. Este posibila si rotatia piesei curente cu ajutorul unui buton. La inceputul jocului se seteaza viteza, iar la sfarsit se afiseaza scorul.
Schema bloc a proiectului:
Piesele necesare:
Am folosit bibliotecile <avr/io.h>, <util/delay.h>,<avr/pgmspace.h>, dar si o biblioteca specifica LCD-ului Nokia 5110.
Am folosit o matrice in care am retinut valoarea fiecarui pixel, dar si 2 vectori pentru piesa curenta. Pentru a apela functiile specifice acestui LCD, am convertit aceasta matrice intr-o structura liniara (un vector). Mi-am construit 7 tipuri de piese, iar pentru fiecare model am aplicat mutari, rotatii specifice. Initial se apeleaza functia de initializare a ecranul, se alege viteza cu ajutorul butoanelor si cand se apasa butonul de start apare pe ecran prima piesa. Piesele sunt generate random, se verifica daca pixelii sunt deja ocupati(coliziune) si in functie de starea jocului, se plaseaza piesa sau ramane pe loc.
Apasarea butoanelor si folosirea buzzer-ului este cea asemanatoare implementata la laborator.
A fost un proiect interesant atat din punct de vedere al hardware-ului, cat si din punct de vedere al software-ului. Am reusit sa implementez proiectul, desi nu a fost atat de usor pe cat ma asteptam.
alegerea temei
schema bloc
schema hardware
realizarea placutei de baza
adaugarea componentelor aditionale
implementarea software
Laboratoarele
Surse pentru LCD : https://github.com/LittleBuster/avr-nokia5110