This is an old revision of the document!
Acest proiect, X și 0, se bazează pe clasicul joc între 2 playeri, “X”, respectiv “0”, care marchează pe rând o căsuță dintr-un tabel cu 3 linii și 3 coloane. Jucătorul care reușește primul să marcheze 3 căsuțe adiacente pe orizontală, verticală sau diagonală câstigă jocul.
Ideea acestui proiect a venit în urma dorinței de a face un joc cu ajutorul plăcuței Arduino, iar ca punct de start am considerat acest joc a fi cel mai potrivit pentru învățare și aprofundarea cunoștințelor, acesta fiind și un joc clasic și popular.
Proiectul este dezvoltat pe o plăcuță Arduino Uno R3 ATMega328P și este afișat pe un ecran LCD sub forma unei matrici 3×3.
Jucătorii pot selecta căsuța în care să plaseze simbolul pentru joc prin intermediul unui joystick, fiecare jucător având un led care se aprinde atunci când îi este rândul să mute.
La fiecare mutare se va auzi și un sunet prin intermediul unui buzzer, iar la finalul jocului se va afișa un mesaj în funcție de cine a câștigat, în timp ce se aprinde led-ul jucătorului respectiv, și afișând scorul dintre cei 2 jucători.
Listă de piese necesare pentru acest proiect
Biblioteca utilizata: st7735.h
Mediul de dezvoltare folosit pentru realizarea acestui proiect a fost PlatformIO. In ceea ce priveste componenta de baza proiectului, si anume LCD-ul pe care este afisat tabla de joc, am folosit o librarie 3rd-party (st7735.h), dar si programare pentru setarea registrilor pentru jocul propriu-zis de X si 0 ca in laboratoare.
Pentru gestionarea mutarilor jucatorilor am folosit modului Joystick, pentru care am avut nevoie de modulul ADC, adica transformarea semnalului analog in digital.
Pentru sunetul buzzerului am folosit timer-ul 0, care se declanseaza la momentul plasarii in casuta al piesei corespunzatoare a jucatorului.
Pentru a determina tabla, m-am folosit de o matrice de dimensiune 3 x 3, in care se stocheaza mutarile, afisandu-le in LCD prin intermediul unor coordonate, si folosindu-ma de functiile date de librarie pentru desenarea X-ului si 0-ului in casuta, la finalul jocului afisandu-se care jucator a castigat si scorul final, cu rundele castigate de jucatorul 1, jucatorul 2, respectiv egalitate.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.