Dorian DOGARU - Tetris

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Tetris este un joc video creat de Alexei Pajitnov în iunie 1985. Numele jocului a fost derivat din grecescul tetra, pentru a face referire la faptul că toate piesele sunt formate din patru patrățele (blocuri), și tenis, care era jocul preferat al creatorului.

Fiecare piesă a jocului (numită tetrimino) este formată din patru blocuri pătrate. O secvență aleatoare de piese se deplasează în jos pe suprafața de joc (o zonă dreptunghiulară de dimensiunea a 16 blocuri pe verticală si 10 blocuri pe orizontală). Scopul jocului este de a manipula aceste piese prin deplasare pe orizontală și rotire cu 90 de grade astfel încât să se obțină o linie orizontală de 10 blocuri fară goluri. La crearea unei astfel de linii aceasta dispare și blocurile de desupra ei vor coborî. Când un anumit număr de linii sunt eliminate se trece la nivelul următor. Odată cu avansarea jocului piesele încep să coboare mai repede, jocul sfârșindu-se atunci când suprafața de joc se umple și alte piese nu mai au loc să apară.

Descriere generală

Figura următoare reprezintă diagrama bloc cu toate modulele hardware ale proiectului ilustrând modul în care acestea interacționează.

Figura următoare reprezintă diagrama bloc cu toate modulele software ale proiectului ilustrând modul în care acestea interacționează.

Design hardware

Listă piese

Componente Nr. buc. Preț unitar (RON) Preț total (RON) Detalii
RAYSTAR OPTRONICS RG12864B-GHW-V 1 97,65 97,65 rg12864b-ghw-v
NINIGI TACT-64N-F 4 0,21 0,84 ninigi
SR PASSIVES CF1/4W-10K 4 0,03 0,12 sr-passives
VISATON 2823 1 25,84 25,84 2823

Costuri totale: 124,45RON

* Lista de piese și consturile totale nu conțin componentele de bază necesare etapei I.
* Prețurile includ TVA.

Scheme electrice

Figura următoare reprezintă schema electrică a circuitului.

Design software

Jocul Tetris este scris în limbajul de programare C. Pentru compilarea codului sursă este folosit compilatorul avr-gcc.

Pentru afișarea pe LCD a imaginilor și a font-urilor a fost necesară dezvoltarea bibliotecii GLI (împreună cu Cătălin DOGARU) care să permită acest lucru. Această bibliotecă oferă un set de funcții și tipuri de date care simplifică modul de lucru cu LCD-ul și cu resursele grafice. Biblioteca interacționează cu LCD-ul prin intermediul driver-ului NT7108.

Driver-ul NT7108 ofera un set de funcții pentru inițializarea și controlul LCD-ului.

Pentru crearea resurselor grafice în formatul folosit de biblioteca GLI a fost necesară dezvoltarea setului de aplicații GLI_Tools format din următoarele programe:

  • GLI_BitmapEditor
  • GLI_FontGenerator

Biblioteca GLI

Biblioteca GLI permite afișarea pe LCD a imaginilor și a font-urilor. Aceasta oferă un set de funcții și tipuri de date care simplifică modul de lucru cu LCD-ul și cu resursele grafice. Biblioteca interacționează cu LCD-ul prin intermediul driver-ului NT7108.

Biblioteca GLI oferă urmatoarele funcții:

void GLI_Initialize(void);
 
void GLI_Clear(unsigned char Color);
void GLI_SetPixel(unsigned char x, unsigned char y, unsigned char Color);
void GLI_StrokeRectangle(unsigned char Left, unsigned char Top, unsigned char Right, unsigned char Bottom, unsigned char Color);
void GLI_DrawBitmap(unsigned char x, unsigned char y, const GLI_BITMAP *pBitmap);
void GLI_DrawString(unsigned char x, unsigned char y, const GLI_FONT *pFont, const char *pszString);
 
void GLI_Present(void);

Driver NT7108

Driver-ul NT7108 ofera un set de funcții pentru inițializarea și controlul LCD-ului.

Acesta oferă următoarele funcții pentru inițializarea LCD-ului, scrierea instrucțiunilor către LCD, scrierea datelor în RAM-ul LCD-ului, citirea stării LDC-ului și citirea datelor din RAM-ul LCD-ului:

void NT7108_Initialize(void);
void NT7108_WriteInstruction(unsigned char ChipSelect, unsigned char Data);
void NT7108_WriteData(unsigned char ChipSelect, unsigned char Data);
unsigned char NT7108_ReadStatus(unsigned char ChipSelect);
unsigned char NT7108_ReadData(unsigned char ChipSelect);

GLI_Tools

Setul de aplicații GLI_Tools permite crearea resurselor grafice în formatul folosit de biblioteca GLI. Codul sursă este scris în limbajul de programare Visual C# și a fost dezvoltat în mediul de dezvoltare integrat Microsoft Visual Studio 2010.

GLI_BitmapEditor

Programul GLI_BitmapEditor permite crearea și salvarea de imagini ce pot fi folosite apoi de aplicație prin intermediul bibliotecii GLI.

Imaginea următoare ilustrează ferestrele principale ale programului GLI_BitmapEditor.

GLI_BitmapEditor

GLI_FontGenerator

Programul GLI_FontGenerator permite generarea de font-uri ce pot fi folosite apoi de aplicație prin intermediul bibliotecii GLI.

Imaginea următoare ilustrează ferestrele principale ale programului GLI_FontGenerator.

GLI_FontGenerator

Rezultate obţinute

Imaginile următoare ilustrează rezultatele obținute în urma realizării proiectului.

Download

Bibliografie/Resurse

pm/prj2013/sstegaru/27.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0