Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul meu consta in implementarea jocului Tetris pe un LCD. Pentru interfatarea cu utilizatorul se va folosi un buton pentru a roti piesele si qTouch-ul de pe placa pentru a controla miscarile stanga-dreapta. Jocul poate fi jucat de o singura persoana la un moment dat, aceasta primind puncte pentru fiecare linie completata, care apoi se va sterge de pe LCD. Pe masura ce numarul de puncte creste, se va mari si viteza de cadere a pieselor. De asemenea, folosind un buzzer se va auzi melodia din jocul Tetris.
Scopul proiectului este acela de a pune in practica notiunile invatate pe parcursul laboratoarelor de PM, realizand un joc in care utilizatorul incearca sa nu piarda lupta pe masura ce viteza de cadere a pieselor creste.
Ideea a pornit de la jocul Tetris pe care il jucam in copilarie si consider ca va fi o experienta provocatoare pentru mine si distractiva pentru ceilalti.
Schema bloc
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 qTouch-ul si le poate roti folosind un buton, 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.
Pe masura ce numarul de puncte creste si dificultatea jocului se mareste deoarece miscarea pieselor se va accelera. Jucatorul va pierde jocul in momentul in care LCD-ul se umple pe verticala.
Componente placa de baza:
Nr. Crt. | Piesa | Cantitate | Pret | Magazin | Observatii |
---|---|---|---|---|---|
1 | ATMEGA324PA-PU | 1 | 21.74 | Farnell | Datasheet |
2 | USB-B | 1 | 2 | Farnell | - |
3 | 16MHZ QMIM016 | 1 | 1.17 | Farnell | - |
4 | ZENER | 2 | 0.5 | Farnell | - |
5 | LED EL333 | 2 | 1.09 | Farnell | - |
6 | K1X10 WSL040 | 1 | 0.5 | Comet | - |
7 | K2X10 | 1 | 1.17 | Farnell | - |
8 | PUSHBUTTON | 2 | 0.66 | Farnell | - |
9 | 100R | 3 | 0.23 | Farnell | - |
10 | 470R | 3 | 0.22 | Farnell | - |
11 | 1K5 | 1 | 0.24 | Farnell | - |
12 | 10K | 1 | 0.24 | Farnell | - |
13 | 100nF | 3 | 0.41 | Farnell | - |
14 | 15pF KEPF015 | 2 | 0.44 | Farnell | - |
15 | Soclu DIP40 dil40emf | 1 | 1.15 | Farnell | - |
16 | Jumper | 1 | 0.76 | Farnell | - |
Componente particulare:
Nr. Crt. | Piesa | Cantitate | Pret | Magazin | Observatii |
---|---|---|---|---|---|
1 | TD-T1464 | 1 | 29.95 | OptimusDigital | Datasheet |
2 | Fire Colorate mama-tata(10 buc) | 2 | 7.45 | OptimusDigital | - |
3 | Modul cu Buzzer activ | 1 | 6.95 | OptimusDigital | Schema |
4 | 27nF 1206 | 3 | 0.57 | Farnell | - |
5 | 1K 1206 | 3 | 0.1 | Farnell | - |
6 | Regulator tensiune | 1 | 2.18 | Farnell | - |
7 | Condensator electrolitic 16V | 1 | 0.2 | Franell | - |
Schema electrica
Am folosit o matrice de char-uri de dimensiune 13×10 pentru a retine piesele blocate pe ecran atunci cand are loc o coliziune cu bara de jos a chenarului sau o coliziune pe patratul/patratele de jos cu o alta piesa blocata.
Formele si culorile pieselor sunt generate random.
Functiile implementate de mine se gasesc in urmatoarele fisiere:
1.coliziuni.c, coliziuni.h: functii pentru coliziunea cu peretii chenarului(stanga, dreapta, sus, jos),pentru coliziunea cu o alta piesa la stanga/dreapta sau jos.
2.forme.c, forme.h: functii prin care generez piesele de diferite forme, prin care generez piesele random, prin care schimb piesa atunci cand se apasa butonul pentru a o roti
3.joc.c, joc.h: functii prin care desenez grila de joc, prin care desenez piesele blocate pe ecran, prin care actualizez si afisez scorul, prin care afisez mesajul de esec, prin care verific cazul in care linia este completa
Mai multe informatii despre implementare se gasesc in arhiva de la Download, in care se afla si un fisier README.
A fost un proiect prin care am reusit sa aprofundez materia.
Jocul este complet functional, ceea ce ma bucura foarte mult, insa nu am reusit sa implementez si functionalitati pentru buzzer deoarece nu am mai avut timp.
Cu qTouch Sliderul a fost mai mult de munca, insa vazand rezultatul final, a meritat tot efortul.
Se gaseste in arhiva si un README pentru mai multe detalii.
arhivatetris.zip
Resurse Software
LCD Librarie LCD
QTouch Slider : Librarie QTouch
Resurse Hardware
Datasheet ATMega
Datasheet LCD