Table of Contents

Miruna - Maria CREŢAN (66830) - Tetris Game

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

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.

Consider ca este util deoare un joc placut, recreativ, ce creeaza o competitie intre prieteni, dar este mai mult adresat copiilor.

Descriere generală

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:

600

Hardware Design

Piesele necesare:

  1. Piese de bază si placuta
  2. Display Nokia 5110
  3. 3 Butoane
  4. Placa aditionala (Perfboard)
  5. Fire de legatura
  6. Fire conexiune display
  7. Buzzer pentru efecte sonore

Schema electrica - Eagle

Software Design

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.

Rezultate Obţinute

https://drive.google.com/file/d/0B36DRcKdcQ5RaXJnN09JOW51bk0/view

Concluzii

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.

Download

Surse: pm:prj2017:334cc_cretan_miruna_pm_tetris

Jurnal

alegerea temei

schema bloc

schema hardware

realizarea placutei de baza

adaugarea componentelor aditionale

implementarea software

Bibliografie/Resurse

Laboratoarele

Surse pentru LCD : https://github.com/LittleBuster/avr-nokia5110