X si 0 pe LCD

Autor: Stan Claudiu Marian

Introducere

Proiectul reprezinta implementarea jocului de X si 0 folosind o placuta Arduino si un LCD grafic. Interactiunea cu jocul va fi facuta prin butoane. Scopul proiectului este sa permita atat jocul intre 2 utilizatori cat si intre utilizator si un bot. Ideea mi-a venit dupa ce m-am uitat prin proiectele din anii trecuti. Consider ca este util pentru a experimenta lucrul cu funcționalitatile oferite de Arduino si in acelasi timp este o modalitate de relaxare.

Descriere generala

Jocul va contine 5 butoane, 4 pentru deplasarea pe tabla de joc si un buton “OK” pentru selectarea optiunii dorite. Cand este selectata o casuta se va evidentia acest lucru. Jocul se termina cand un simbol se regaseste pe o intreaga linie, coloana sau diagonala.

Hardware Design

Lista de piese

  • Arduino UNO
  • LCD ST7920
  • Butoane
  • Rezistente
  • Breadbord
  • Fire

Schema electrica

Am folosit un LCD ST7920 si am conectat dupa cum urmeaza:

  • GND - GND
  • VCC - 5V
  • RS - pin 10
  • R/W - pin 11
  • E - pin 13
  • PSB - GND
  • RST - pin 8
  • BLA - 3.3V
  • BLK - GND

Pe graficul urmator am considerat urmatoarele notatii (pentru ca pinii DB0, DB1 .. DB7 au ramas neconectati):

  • DB4 pe grafic ⇒ PSB
  • DB6 pe grafic ⇒ RST
  • primul LED pe grafic ⇒ BLA
  • al doilea LED pe grafic ⇒ BLK

Pentru o claritate mai buna firele au aceeasi culoare pentru conexiunile arduino - LCD.

Software Design

Implementare

Ecranul se deschide cu posibilitatea de a alege tipul de joc:
  - 1 vs Bot (prin apasarea butonului 1)
  - 1 vs 1 (prin apasarea butonului 2)
Daca a fost aleasa optiunea "1 vs Bot" atunci acum utilizatorul poate alege cu ce simbol doreste sa joace:
  - X (prin apasarea butonului 1)
  - 0 (prin apasarea butonului 2)
  Botul este un bot amator din punct de vedere al dificultatii.

  Dupa ce partida s-a incheiat pe ecran ne apare deznodamantul jocului si putem alege ce dorim sa se intample in continuare:
    - Mergem catre meniul principal (prin apasarea butonului 1)
    - Rejucam partida, pastrand acelasi simbol (prin apasarea butonului 2)
Daca a fost aleasa optiunea "1 vs 1" atunci incepe jocul cu simbolul "X" avand prima mutare.

  Dupa ce partida s-a incheiat pe ecran ne apare deznodamantul jocului si putem alege ce dorim sa se intample in continuare:
    - Mergem catre meniul principal (prin apasarea butonului 1)
    - Rejucam partida (prin apasarea butonului 2)
Am construit tabla de joc ca o matrice de 3 x 3. Utilizatorul incepe din coltul din stanga sus si se deplaseaza astfel:
  - in stanga (prin apasarea butonului 1)
  - in dreapta (prin apasarea butonului 2)
  - in sus (prin apasarea butonului 3)
  - in jos (prin apasarea butonului 4)
Initial in casutele goale, in care nu a fost pus nici "X", nici "0" se regaseste simbolul "?".
Ne putem da seama in ce casuta ne aflam daca ne uitam la fontul casutei respective. Casuta curenta are un font diferit de celelalte casute.

Daca dorim sa punem un simbol intr-o casuta atunci vom apasa butonul 5. Daca deja exista un alt simbol in casuta nu vom fi lasati sa punem simbolul nostru peste acesta si vom cauta alta casuta libera.  

Mediu de dezvoltare

Arduino IDE

Biblioteci folosite

U8g2lib - pentru ecranul LCD ST7920

Rezultate obtinute

Concluzii

Proiectul nu mi-a dat prea mari batai de cap. Am incercat sa pastrez hardwareul si codul destul de ordonate. Am reusit sa realizez tot ce mi-am propus. Jocul are implementate toate functionalitatile,atat pentru modul single player cat si pentru modul multiplayer. In concluzie, pot sa spun ca a fost o experienta placuta si interesanta sa lucrez cu Arduino UNO si cu un LCD.

Download

Bibliografie/Resurse

pm/prj2021/apredescu/x-si-0.txt · Last modified: 2021/06/01 17:17 by claudiu_marian.stan
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