Mi-am propus sa implementez un joc bine cunoscut si anume: X si 0. Un lucru bine stiut este faptul ca se joaca la dublu( necesita doi jucatori umani). Pentru a castiga este nevoie ca simbolul unuia dintre jucatori sa existe pe o linie/coloana/diagonala. Se va juca pe o matrice de 5×5 pentru a complica jocul clasic de X si 0 cu matrice de 3×3.
Schema bloc este urmatoarea:
Pentru alegerea pozitiei am 4 butoane pe care le folosesc la selectia pozitiei din matricea de 5×5 si inca un butoan ce au ca semnificatie simbolul “x” respectiv “0”.
In functie de evolutia jocului ce va putea fi urmarita pe LCD, in caz de castig se va afisa urmatoarele mesaje: “Jucatorul X a castigat”, “Jucatorul 0 a castigat”, “Remiza”.
Componente:
Scheme folosite:
Pentru cuplarea LCD-ului :
Partea de software a acestui proiect va fi realizata in limbajul C folosind WinAvr.
Jocul propriu zis va fi construit dupa urmatoarii pasi:
Jocul va fi pastrat in memoria microcontrollerului. Pentru resetarea jocului se va apasa pe un buton ce este legat de alimentare.Primul jucator va fi cel care si-a stabilit drept simbol “x”.
Consideram ca avem doi jucatori:
Astfel jucator1,apasa butonul cu simbolul x(cel din mijloc).Apoi merge in “matricea”de butoane si apasa butoanele Stanga Dreapta Sus Jos-corespunzator pozitiei din matrice afisata pe LCD ce o doreste.Dupa ce a ales pozitia,este randul jucatorului 2.Simbolul x este dezactivat atunci cand jucator2 apasa butonul pentru 0.Jucator2 alege pozitia unde doreste sa puna simbolul 0.Jocul se termina cand unul din cei doi jucatori are o linie/coloana/diagonala completata cu simbolul lui sau atunci cand matricea este plina si se considera remiza.
Pentru comunicatia cu LCD-ul, voi folosi urmatoarele functii (principale si pentru programul de x si 0): void lcd_init(void);
void lcd_clear(void);
void lcd_clear_area(unsigned char line, unsigned char startX, unsigned char endX);
void lcd_clear_line(unsigned char line);
void lcd_goto_xy(unsigned char x, unsigned char y);
void lcd_chr(char chr);
Atasez si o arhiva ce are mai multe detalii: comunicare-lcd-functii.zip
Voi publica aceste concluzii dupa ce voi termina de implementat proiectul.