Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in realizarea unui joc pe un LCD grafic. Jocul este alcatuit dintr-o matrice de patrate colorate diferit si presupune cucerirea acesteia prin combinarea culorii si suprafetei de start. Jocul original poate fi gasit si jucat la adresa: http://unixpapa.com/floodit/
Nume | Cantitate | Pret (RON) |
---|---|---|
Placa de baza PM 2016 | 1 | 8 |
Componente de baza PM 2016 - vezi lista | 1 | 36 |
Nokia 5510 LCD display | 1 | 25 |
Bareta fire mama-mama | 1 | 13 |
Placa de test | 1 | 7 |
Butoane | 5 | 3 |
R 3K3 | 7 | - |
R 1K8 | 7 | - |
Deoarece LCD-ul Nokia5110 necesita alimentare la 3.3V, toate legaturile cu microcontroller-ul(5V) vor fi realizate cu divizoare de tensiune. Schema electrica realizata in Proteus:
Pentru partea software am folosit mediul de dezvoltare WinAVR, impreuna cu editor-ul text Programmers Notepad. Libraria folosita pentru a interfata cu LCD-ul am luat-o de pe platforma Quantum Torque[1]. Libraria ofera functii precum LCD_init, LCD_clear, LCD_str, LCD_goto_xy. Jocul presupune 'cucerirea' hartii cu grupa de simboluri din stanga sus. O grupa de simboluri este reprezentata de o multime de simboluri 'adiacente'(sus-jos-stanga-dreapta). In cod, salvez pentru fiecare simbol din matrice grupa acestuia, iar atunci cand se apasa pe un buton corespunzator unui simbol fac o unificare globala(pentru fiecare casuta, daca are vecini din grupe diferite si cu acelasi simbol, le unesc grupele din care fac parte). Algoritmul este extrem de similar cu paradigma Union-Find(Multimi disjuncte), insa lipsa structurilor de date din STL in compilatorul avr, m-a determinat sa abordez problema intr-un mod mai ineficient, insa rapid pe o dimensiune a datelor atat de mica.
Arhiva cu toate resursele este disponibila la [2].