Joculet Tetris pe matrice de leduri 8x8

Introducere

  • Proiectul consta in implementarea unui joc de Tetris pe o matrice de leduri de dimensiuni 8×8 cu afisarea scorului la final si memorararea unui scor maxim.
  • Acest joculet poate fi vazut ca o sursa de amuzament
  • Ideea lui mi-a venit de la vechile jocuri de buzunar ale copilariei foarte practice in cazul drumurilor lungi
  • Exista posibilitatea inbunatatirii lui (de ex. sa aiba sursa independenta de alimentare, constructie mai rigida, afisaj pe mai multe matrice), dar timpul nu a fost suficient pentru toate aceste lucruri.

Descriere generală


Pentru iubitorii de jocuri, Tetris e un joc foarte frumos si interesant din categoria jocuri puzzle si jocuri de indemanare. Regulile acestui joc sunt foarte simple si cunoscute: trebuiesc unite cuburile astfel incat sa formeze o linie continua si sa fie eliminate, pentru a ramane cat mai putine cuburi in joc. Cand o linie este eliminata, celelalte coboara. Tetris, la fel ca si multe alte jocuri, este un joc vechi, clasic, dar care nu s-a demodat peste timp, el fiind cautat si la ora actuala.

Pentru a juca jocul tetris se folosesc tastele directionale (cele 3 butoane), pentru a invarti piesa, astfel incat ea sa se potriveasca cu cele din joc.

In jocul clasic, piesele sunt formate din 4 cuburi.


Din cauza afisajului disponibil redus (doar 8×8 leduri), am simplicat putin piesele si acum folosesc urmatoarele figuri:


Diagrama UML a jocului

Hardware Design

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

Piese folosite:

  • matrice leduri 8×8
  • 8 rezistente 220 ohmi
  • 3 butoane
  • cablu plat, cablu simplu
  • soclu tip bareta (pentru fixarea matricei)
  • pin headeri
  • placuta de la etapa I

Descriere componente

Placuta etapa I

Schema ATmega16

=Matricea de leduri 8×8=

Matricea are urmatoarea scheme a legarii ledurilor:

Schema circuitului

Pinii corespunzatori liniilor matricei se leaga la pinii C ai microcontrolerului, in timp ce pinii matricei corespunzatori coloanelor se leaga la pinii A ai microcontrolerului. Pentru a evita arderea ledurilor, am pus cate o rezistenta pe fiecare anod (liniile matricei). Cele 3 butoane se leaga astfel:

  • buton deplasare dreapta - PB2
  • buton deplasare stanga - PB3
  • buton rotire figura - PB1

=Simulare in Proteus=

=Schema reala=

Dupa cum se observa din imagini, circuitul este alimentat prin USB la 5V.

Software Design

Detalii de implementare:

  • codul jocului a fost scris in Notepad++ si compilat cu avr gcc
  • matricea de leduri este privita ca o matrice normala
  • elementele matricei cu valorea 1 inseamna led aprins, cele cu valoarea 0 - led stins
  • Functii folosite:
    • void afistext(char *string) - pentru afisarea textului primit ca parametru pe matrice
    • void completMatrix() - functie de initializare a matricei
    • void printMAtrix() - functie de afisare a pieselor pe matrice
    • int isLine() - functie pentru a depista cand s-au umplut o linie si trebuie stearsa, iar piesele de deasupra sa coboare
    • int ledOFF(int centru_i,int centru_j) - functie de stingere a ledurilor (folosita la deplasare si rotatie) in functie de centrul piesei
    • int ledON(int centru_i,int centru_j) - functie de aprindere a ledurilor (folosita la deplasare si rotatie) in functie de centrul piesei
    • int drawImage(int i,int j,int centru_i,int centru_j) - functie care deseneaza piesa in noua pozitie daca aceasta este una valabila. In cazul in care pozitia nu este permisa, functia returneaza 1
    • void start(char *string1) - functie de start a jocului
    • int main() - functia principala a programului

Rezultate Obţinute

Jocul este complet functional. Jocul incepe cu mesajul “TETRIS - THE ULTIMATE GAME”. La apasarea oricarui buton, jocul debuteaza. La inceput, scorul este 0. Fiecare linie stearsa aduce un punct. in cazul in care se ajunge in varful matricei, jocul se incheie si este afisat rezultatul final si scorul maxim facut pana atunci. in cazul in care este batut scorul maxim, se updateaza acesta si este afisat un mesaj specific.

Am atasat un filmulet cu o demonstratie a jocului.

Film demo

Concluzii

Proiectul a fost interesant in sensul ca am dobandit noi cunostinte. Am intampinat unele probleme in realizarea lui, dar per ansamblu a fost o experienta din care am avut ce invata.

Download

Arhiva cu sursele si datasheet-ul matricei

dinescu_andrei333cb_proiect_pm.zip

Bibliografie/Resurse

Exemplu cod

Filmulet demonstrativ

Getting started

Atmega16 datasheet (vezi documentatie laborator)

8×8 DOT MATRIX LED DISPLAY UVP-2×88 SERIES datasheet (vezi arhiva)

pm/prj2011/dloghin/tetris_dac.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