Adrian - Cosmin COMAN - Joc tetris

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scopul proiectului a fost realizarea unui joc tetris pe 2 matrici de leduri 8×8 inlantuite.

Prezentarea pe scurt a proiectului vostru:

  • ce face
  • care este scopul lui
  • care a fost ideea de la care aţi pornit
  • de ce credeţi că este util pentru alţii şi pentru voi

Descriere generală

Microcontrolerul aprinde pe rand ledurile de pe cate o linie pentru un interval mic de timp astfel incat sa apara efectul de persistenta al vederii. Liniile sunt selectate cu ajutorul unui contor pe 4 biti.

O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.

Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html

Hardware Design

Lista piese:

2 x 74HC138

2 x Matrice LED 8×8

4 x push button

16 x rezistente 470Ω

cablu panglica + mufe + jack

Aici puneţi tot ce ţine de hardware design:

Software Design

IDE: Programmer's Notepad [WinAVR]

Programul face loop peste un vector de int in care este tinuta starea jocului combinat cu piesa curenta. Piesa curenta este o structura ce contine toate rotatiile posibile, coordonatele, rotatia curenta si limitele pe orizontala. Butoanele sunt verificate dupa randarea fiecarei linii pentru a avea un timp de raspuns cat mai mic. Dupa inregistrarea unui input, acesta este blocat pentru un anumit interval de timp, fiind necesara reapasarea butonului pentru a trimite un nou semnal.

Pentru a genera un joc aleator de fiecare data, am folosit un counter care asteapta primul input de la utilizator si este folosit ca seed pentru functia de random. (time.h nu este disponibil fara un sistem de operare)

Structuri: shape_t {

int pixels[4][4]; 			// cele 4 rotatii posibile.
int x,y; 				// pozitia
int rotation; 				// rotatia aleasa
int max_shift[2]; 			// limitari pentru fiecare rotatie

}

Pozitia curenta precum si toate piesele jocului sunt variabile/constante de tip shape_t;

Functii:

int valid_position(); //verifica daca pozitia setata pentru piesa curenta este valida si nu exista suprapuneri
void controls (int input_time); //handler pentru input
void display(); //afiseaza jocul, linie cu linie
void update_board (); //updateaza starea jocului la un interval definit
void drop (); //apelata de update_board, coboara piesa cu o linie
void game_over(); // 

Rezultate Obţinute

Placile sunt functionale, usor detasabile si reutilizabile.

<WRAP center round todo 60%> poze + demo </WRAP>

Concluzii

Partea hardware destul de usor de proiectat si asamblat (exceptand faptul ca am gresit tipul demultiplexoarele). Placuta de baza reutilizabila pentru alte proiecte este un plus iar pe extensie se mai pot dezvolta alte programe de acelasi tip ( Pong, Space-invaders, Scrolling text).

Am exagerat un pic cu rezistentele, puteam folosi de 2-300 pentru a avea mai multa luminozitatea atunci cand sunt multe leduri aprinse.

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Datasheet ATMega324PA-PU

Datasheet 74HC138

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

pm/prj2013/dtudose/joc-tetris.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