X și 0

Introducere

Jocul X și 0 face parte din categoria clasică de jocuri. Proiectul are ca scop să realizeze jocul X și 0, atât varianta clasică, cât și alte variante extinse ale acestuia.

Jocul Clasic: În versiunea clasică a jocului, obiectivul este să formați o linie, o coloană sau o diagonală cu trei simboluri identice (X sau O) pe o tablă de joc de 3×3.

Varianta Extinsă:Varianta extinsă aduce noi provocări. În această variantă, după ce se atinge numărul maxim de trei simboluri identice fără a exista un câștigător, acele simboluri vor fi șterse de pe tablă, deschizând calea pentru noi combinații și strategii. În plus, există și varianta de joc care se mai termină doar atunci când se realizează o figură aleasă aleator la începutul jocului.

Descriere generală

Cei doi jucatori vor alege la început dacă vor varianta clasică a jocului sau o variantă extinsă. Alegerea tipului de joc se realizează prin butoane. Pe display se va afișa un mesaj pentru pentru fiecare variantă de joc și ce buton trebuie apăsat pentru acestea. Pentru adaugarea simbolurilor de X și 0 vor fi disponibile 9 butoane pentru fiecare pozitie. De asemenea, va exista un buton si pentru restartarea jocului. Finalul jocului va fi semnalat prin intermediul buzzer ului, făcându-se diferența între o remiză și un câștig.

O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.

Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html

Hardware Design

Componente hardware:

  • Arduino uno R3: Microcontroler programat să interpreteze input ul de la butoane, să afișeze starea curentă a jocului și să atenționeze jucătorii prin intermediul buzzer ului în situațiile speciale.
  • Display LCD ST7920: Afișarea instrucțiunilor înaintea jocului, a tablei de joc și a informațiilor din timpul jocului.
  • Buzzer: Folosit pentru atenționarea jucătorilor în momente speciale (final de joc, egalitate, mutare invalidă)
  • Butoane push: Există 10 butoane - 9 butoane pentru fiecare poziție de pe tabla de joc și al 10-lea pentru restartarea jocului curent.
  • Placă pcb prototipare
  • Rezistențe 220Ω trough hole

Schema electrică:

700

Pini utilizați

Legături LCD - Arduino:

  • VCC - VCC
  • GND - GND
  • pin RS - pin 10
  • pin RW - pin 11
  • pin E - pin 13
  • pin DB4 - GND
  • pin DB6 - pin 8
  • pin ANOD LED - VCC
  • pin CATOD LED - GND

Legături butoane - Arduino:

  • Buton 1 - pin A4
  • Buton 2 - pin A3
  • Buton 3 - pin A2
  • Buton 4 - pin A1
  • Buton 5 - pin A0
  • Buton 6 - pin 2
  • Buton 7 - pin 3
  • Buton 8 - pin 4
  • Buton 9 - pin 5
  • Buton restart - pin A5

Legătură BUZZER - Arduino: pin 6

1000

Software Design

Mediu de dezvoltare: Arduino IDE

Biblioteci utilizate

  • Wire.h
  • SPI.h, U8X8_HAVE_HW_SPI - folosit pentru utilizarea display ului

Structuri utilizate:

  • codă implementată cu vector circular pentru varianta avansată unde trebuie eliminate simboluri dacă tabla de joc este prea încărcată
  • matrice 3×3 pentru a reține starea jocului - unde se află simbolurile pe tablă

Funcții utilizate

Funcțiile se împart în 2:

  • funcții utilizate pentru mesajele de pe display și ordinea acestora
  • funcții pentru stările jocului: adăugarea pe tablă a simbolurilor în pozițiile selectate prin apăsarea butoanelor, verificarea pozițiilor, verificarea finalității jocului
  • funcții pentru buzzer: semnalizarea începerii jocului, detectarea unei mișcări invalide, detectarea finalului - se redă o melodie diferită pentru fiecare câștigător sau remiză

Având implementat 4 tipuri de joc X și 0, funcțiile de joc se pot grupa în 2 categorii:

  • funcții care respectă regulile clasice: simbolurile adăugate pe tabla de joc rămân până la final și jocul se termină când s-a detectat o linie/coloană/diagonală cu același simbol
  • funcții care diversifică jocul: simbolurile adăugate pe tabla de joc sunt eliminate dacă tabla conține 6 simboluri, jocul se termină când cineva realizeaza figura afișată în dreapta display ului.

Astfel:

  • primul joc este cel clasic
  • al doilea elimină simbolurile și se termină când se realizează o linie/coloana/diagonală cu același simbol
  • al treilea nu elimină simboluri dar se termină când se realizează pe tabla de joc figura prezentată în partea dreaptă
  • al patrulea este o combinație între al doilea și al treilea: se elimin[ simboluri și se termină când un jucător realizează figura prezentată

Aceste variante de X și 0 vin și cu un timer de 5/10 secunde în care jucătorul trebuie să adauge simbolul pe tablă, altfel își pierde rândul.

Demo X și 0

Rezultate Obţinute și Concluzii

Am creat o versiune îmbunătățită a clasicului joc X și 0, mai atractivă, complexă și ușor de înțeles. Jocul oferă patru variante diverse, mesaje clare și un buzzer pentru momentele cheie. Această versiune captivantă asigură o experiență de joc diversificată și interactivă, menită să atragă și să mențină interesul jucătorilor.

Download

Code Arduino: gabriela_grosu_pm.zip

Jurnal

03.04.2024 - alegerea temei

02.05.2024 - crearea paginii ocw

03.05.2024 - documentație inițială

14.05.2024 - finalizare hardware

19.05.2024 - finalizare software

Bibliografie/Resurse

pm/prj2024/rpascale/gabriela.grosu.txt · Last modified: 2024/05/27 15:53 by gabriela.grosu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0