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. În ceea ce privește componenta de bază a proiectului, și anume LCD-ul pe care este afișat tabla de joc, am folosit o librărie 3rd-party (st7735.h), dar și programare pentru setarea regiștrilor pentru jocul propriu-zis de X și 0 ca în laboratoare.
Pentru gestionarea mutărilor jucătorilor am folosit modulul Joystick, pentru care am avut nevoie de modulul ADC, adica transformarea semnalului analog în digital, ca în laboratorul 4.
Pentru sunetul buzzer-ului am folosit timer-ul 0, care se declanșează la momentul plasării în căsuță a piesei corespunzătoare jucătorului.
Pentru a determina tabla, m-am folosit de o matrice de dimensiune 3 x 3, în care se stochează mutările, afișându-le în LCD prin intermediul unor coordonate, și folosindu-mă de funcțiile date de librărie pentru desenarea X-ului și 0-ului în căsuță, la finalul jocului afișându-se care jucător a câștigat și scorul final, cu rundele căștigate de jucătorul 1, jucătorul 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.