Gabriel-Cristian IVAŞCU (24859) - Tetris
Autorul poate fi contactat la adresa:
Introducere
Proiectul presupune implementarea unui joc simplu de
Tetris pe un LCD Nokia 5110.
Ideea provine de la jocurile pe care obișnuiam să le joc în copilărie pe telefoanele părinților.
Jocul constă într-o secvență random de piese, numite tetriminos, care pică din cer spre tabla de joc.
Obiectivul jocului este de a manipula aceste piese, prin mutarea lor stânga-dreapta și rotirea la 90 grade, astfel încât să fie create linii orizontale continue, fără spații.
Când o astfel de linie este creată, ea va dispărea, și toate blocurile de deasupra ei vor cădea.
Când un anumit număr de linii au fost distruse, jocul va trece la un nivel superior, crescând viteza de cădere a pieselor.
Jocul se încheie când stiva de blocuri ajunge la capătul de sus al tablei de joc, nemaipermițând intrarea noilor piese.
Schema Bloc
Lista de Componente
Componentă | Cod producător | Cantitate |
ATMEGA324PA-PU | ATMEGA324PA-PU | 1 |
Soclu Microcontroller | LC40 | 1 |
USB-B | USB B-PCB-R | 1 |
Quartz 16MHz | Q16.000 MHz HC-49S | 1 |
Diodă Zener | BZX55C3V3 | 2 |
LED 3mm roșu | CLL-50221 | 2 |
Push button | TS-06E (TS-3) | 8 |
Rezistență 100R | RW25CF 100R | 3 |
Rezistență 470R | RW25CF 470R | 3 |
Rezistență 1K5 | RW25CF 1K5 | 1 |
Rezistență 10K | RW25CF 10K | 1 |
Rezistență 1K | RW25CF 1K | 5 |
Rezistență 2K | RW25CF 2K | 5 |
Condensator 100nF | CML 100nF 50V NP0 | 3 |
Condensator 15pF | CML 15pF 50V NP0 | 2 |
Jumper | - | 1 |
Female Headers | PRT-00115 | 1 |
Male Headers | HN1X40 | 1 |
LCD Nokia 5110 | LCD-10168 | 1 |
Hardware Design: Schema Electrică EAGLE
LCD-ul este legat la portul A al microcontroller-ului.
Butoanele sunt legate la portul C al microcontroller-ului.
Rezistențele de 1K și 2K sunt folosite ca divizoare de tensiune pentru a reduce tensiunea de la 5V la 3.3V pentru pinii LCD-ului.
Software Design
-
Pentru încărcarea programului pe Microcontroller am folosit Bootloader HID din tutorialul de
aici.
Driver-ul pentru LCD folosit este cel de la
Quantum Torque pentru Nokia 3310, acesta fiind compatibil și cu Nokia 5110.
Jocul implementează toate cele
7 piese clasice de Tetris: I, J, L, O, S, T, Z.
Se contorizează atât scorul cât și numărul de linii distruse.
Există 5 nivele de viteză în joc, proporționale cu numărul de linii distruse.
Formula după care se calculează scorul este: score = score + LC * (LC + 1) / 2
, unde LC = Lines Cleared.
După cum se observă din formulă, pentru a maximiza scorul, este recomandat a se distruge cât mai multe linii simultan.
Controale:
Buton stânga - Move Left
Buton dreapta - Move Right
Buton sus - Rotate
Buton jos - Hard Drop
Codul sursă conține comentarii referitor la detaliile de implementare.
Rezultate Obţinute
Concluzii
Consider că întreg proiectul a fost o experiență interesantă care m-a ajutat să înțeleg mai bine cum funcționează lucrurile pe partea de hardware.
A fost destul de provocator să construiesc ceva de la zero, în condițiile în care a fost prima oară când am avut de-a face cu lucruri de acest gen.
Sunt foarte mulțumit de ceea ce am obținut în final, în special de funcționalitatea jocului, dar și faptul că am reușit interconectarea plăcuței de bază, a plăcuței de test și a LCD-ului doar prin barete mamă-tată, fără fire de legătură.
Plănuiesc ca în viitorul apropriat să adaug o carcasă plăcuței și să o alimentez de la baterie.
Download
Bibliografie/Resurse
Resurse Software:
Resurse Hardware: