Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul este o implementare a jocului “Game of Life”, in doua versiuni: Conway's Game of Life si High Life. Cele doua implementari au la baza niste reguli de evolutie diferite.
Jocul urmareste evolutia unor celule pe baza unor reguli simple. O celula are doua stari - vie sau moarta. Simularea evolutiei organismelor se face in generatii, astfel ca in fiecare etapa organismele pot supravietui, se pot naste sau pot muri, in functie de numarul de vecini.
Doream sa realizez un proiect pe LCD, de preferat un joc. M-am gandit ca acest joc ar fi mai interesant si mai diferit fata de ce au facut ceilalti.
Butonul de Start porneste jocul. Este initializata tabela de celule, iar la fiecare 500 de ms se calculeaza urmatoarea generatie de celule, dupa care este afisata. Cand se doreste resetarea jocului se apasa butonul de Reset si apoi din nou cel de Start.
In urma simularii am obtinut diferite secvente de generatii in functie de numarul de reproducere, respectiv tipul jocului (Conway sau HighLife), cum era de asteptat.
Am folosit WinAVR pentru dezvoltarea proiectului.
Header-ul “lcd.h” a fost suficient pentru lucrul cu LCD-ul. Nu am folosit algoritmi speciali pentru implementarea/optimizarea jocului, doar am urmat regulile. Nu voi preciza regulile aici, daca sunteti interesati voi pune link-uri mai jos, in Bibliografie. Am realizat 8 caractere custom, unul pentru fiecare combinatie pe care o pot avea 3 celule in cadrul unei celule de pe LCD. S-au obtinut astfel 6×16 celule.
Tabela de celule este initializata random. La fiecare pas este calculata urmatoarea generatie de celule care supravietuieste. Pentru fiecare celula se calculeaza urmatoarea sa stare in functie de starea vecinilor. Pentru acest lucru, am implementat mai multe functii si anume:
Pentru afisarea tabelei am implementat urmatoarele functii:
Am reusit sa duc proiectul la final dupa ce am avut diverse probleme cu placa. Proiectul este functional, iar de fiecare data cand una din cele doua versiuni ale jocului se termina (ramane blocata), se reinitializeaza tabela cu cealalta versiune si jocul se reia.
Pana la PM, nu mai facusem un astfel de proiect. A fost o experienta interesanta, din care cu siguranta am invatat ceva, desi nu aveam asteptari prea mari.
In final, pot spune ca a meritat sa lucrez la acest proiect. Desi m-am apucat tarziu de el, am reusit sa il termin si ma bucur ca am realizat acest lucru. A fost un altfel de proiect, fata de temele pe care le-am avut de implementat pana acum si cu siguranta nu ar trebui sa se renunte la aceasta idee.
Mai jos este un link catre README-ul atasat proiectului:
Mai jos este un link catre sursa proiectului ce contine 4×16 celule (4 custom):
Mai jos este un link catre sursa proiectului ce contine 6×16 celule (8 custom):
Am cumparat piesele de la Comet si Syscom
Datasheet ATMEGA324PA:
Informatii despre joc:
Pentru generarea caracterelor custom: