Joc X si 0

Introducere

Tema proiectului consta in implementarea jocului X si 0 pe un ecran LCD cu touchscreen. Am ales aceasta tema deoarece imi doresc sa utilizez notiunile acumulate deja in cadrul laboaratoarelor pentru a realiza un joc cunoscut de toata lumea.

Descriere generala

  • Jocul este de tipul SinglePlayer. Acesta va juca contra Arduino.
  • La inceputul jocului, playerul este pus sa aleaga cu ce va juca. In cazul in care alege sa joace cu X acesta va face prima mutare, iar daca alege 0 va astepta ca prima mutare sa fie facuta de catre Arduino.
  • Jocul va continua pana cand cineva castiga sau pana cand se ajune la remiza. Dupa terminarea jocului exista posibilitatea de a juca din nou, acest lucru facandu-se prin apasarea butonului “Play Again”.

Schema bloc

Hardware Design

Componente:

Nume Numar
Arduino Uno 1
Modul LCD SPI de 2.8'' cu Touchscreen 1
Breadboard 1
Rezistente 2.2kOhm 7
Rezistente 5.1kOhm 7
Fire 25

Conectare ecran LCD cu Touchscreen

Am conectat GND si VCC de pe ecran la pinii GND, respectiv 5V de pe Arduino, iar restul pinilor i-am conenctat astfel:

  • CLK → pinul 13
  • MISO → pinul 12
  • MOSI → pinul 11
  • CS1 → pinul 10
  • DC → pinul 9
  • RES → pinul 8
  • CS2 → pinul 7

Software Design

Mediul de dezvoltare

  • Arduino IDE

Librarii:

  • SPI.h - librarie pentru comunicare SPI
  • Adafruit_GFX.h - librarie pentru desenarea pe ecran
  • Adafruit_ILI9341.h - librarie pentru ecran tft
  • XPT2046_Touchscreen.h - librarie pentru touchscreen

Detalii Implemetare

Ca si structura de date am folosit un vector de int-uri pentru a retine starea tablei. Pentru inceput desenez primul ecran cu ajutorul functiilor din libraria Adafruit_GFX.h. Dupa un delay prestabilit apare cel de-al doilea ecran unde jucatorul este pus sa aleaga X sau 0. In acest moment, programul asteapta ca ecranul sa fie atins, iar in functie de coordonatele x si y determina ce buton a fost apasat. In continuare, daca jucatorul a apasat pe X, pe ecran se va afisa mesajul “Player VS Arduino”” ceea ce inseamna ca player-ul incepe jocul, iar daca a apasat pe 0, mesajul afisat va fi “Arduiono VS Player”, iar in acest caz arduino va incepe jocul, mai exact este apelata functia playGame(). Pentru ca arduino sa marcheze o casuta de joc, se retin pozitiile libere din vector, apoi se alege random una dintre aceste pozitii, iar in cazul player-ului in functie de coordonatele x si y determinate in urma atingerii ecranului, se verifica in ce casuta se incadreaza, iar apoi este desemnat semnul corespunzator pe ecran. Casutele sunt marcate pana cand numarul mutarilor disponibile ajunge la maxim sau pana cand pe linie/coloana/diagonala se afla numai X sau numai 0. Dupa terminarea jocului pe ecran va aparea un buton care permite reluarea jocului. Daca acesta este apasat, sunt reinitializare variabilele folosite, iar jucatorul este pus din nou sa aleaga.

Rezultate obtinute

  • Pentru inceput pe ecran este afisat numele jocului.

  • Jucatorul este pus sa aleaga cu ce doreste sa joace.

  • Daca playerul alege 0 atunci pe ecran va fi afisat primul mesaj, adica Arduino va incepe jocul, iar daca alege X, atunci va fi afisat cel de-al doilea mesaj.

  • Este afisat careul de joc, apoi se marcheaza casute pana cand cineva castiga sau pana se ajunge la egalitate.

  • Este afisat mesajul “GAME OVER”, alaturi de catigator, sau mesajul “DRAW” in caz de egalitate. De asemenea, exista posibilitatea de a relua jocul apasand pe butonul “Play Again”.

Demo

Concluzii

  • Din punctul meu de vedere, acest proiect a fost unul interesant, din urma caruia am invatat lucruri noi.
  • Ca si functionalitati suplimentare, poate fi implementat un algoritm mai inteligent care sa joace, si de asemenea, la jocuri repetate poate fi adaugat un scor care sa contorizeze cate meciuri au fost castigate de fiecare player.

Download

Jurnal

  • 26.04: alegere tema
  • 04.05: comadare piese
  • 14.05: conectarea componentelor
  • 17.05: realizarea soft-ului
  • 28.05: realizare schema electrica
  • 29.05: finalizare proiect
  • 30.05: filmare demo, documentatie

Bibliografie/Resurse

pm/prj2021/agrigore/joc_x_si_0.txt · Last modified: 2021/05/31 09:27 by irina.grigore0702
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