Am realizat jocul X si 0, implementat cu ajutorul microcontroller-ului ATmega16. Jocul in sine este reprezentat de o matrice de 5*5 leduri si de un set de butoane pentru a prelua miscarile utilizatorului. Butoanele, in numar de 5 reprezinta miscarile: sus, jos, stanga, dreapta si selectare. Se diferentiaza un jucator de altul prin culoarea ledului aprins(fie rosu, fie verde).
Reguli X si 0 pe o matrice 5×5:
Proiectul contine module hardware:
Si software:
Diagrama Bloc:
Se folosesc urmatoarele piese:
Pinii folositi sunt in numar de 20:
Programul urmareste sa implementeze un joc de X si O, in care mutarile adversarului sunt realizate de microcontroller.
Mediul de dezvolatare este AVRStudio 4.0.
Pentru desenarea schemei electrice s-a folosit Eagle 5.7.0.
Pentru a genera mutarile, microcontroller-ul foloseste algoritmul minimax, mai exact varianta Negamax.
Efectiv in functia main(), se preia mutarea utilizatorului si apoi se calculeaza mutarea microcontroller-ului. Dupa fiecare mutare, se verifica daca a castigat cineva sau daca este remiza(adica toate cele doua casute sunt completate).
Alte functii sunt pentru a aprinde becurile si pentru a prelua mutarea de la butoane.
Pentru a determina care casuta este selectata, se foloseste urmatorul algoritm:
Aprinderea becurilor se face prin setarea pinului de linie pe output high si a pinului de coloana pe output low(ground).
Pentru a se aprinde mai multe becuri in acelasi timp, se selecteaza liniile separat, dar la un interval de timp atat de mic, incat toate becurile par aprinse.
Jocul de X si O ramane interesant.