Joc de Sah - Moldovan Victor 343C4

Introducere

Prezentarea pe scurt: Acest proiect doreste sa implementeze un joc de sah

Descriere generală

Jucatorii pot naviga cu butoanele “←”, “↑”, “→”, “↓”, care muta cursorul pe tabla. Cursorul fiecarui jucator nu poate fi mutat decat atunci cand este tura acelui jucator.

Pentru a executa o mutare trebuie mutat cursorul pe una din piese, apasat (select), mutat cursorul pe un spatiu valid, si apasat (select) din nou.

In cazul in care este apasat (select) pe altceva decat un spatiu valid, mutarea se anuleaza si trebuie (select)ata din nou o piesa. Jucatorii pot, odata pe tura, selecta “TIE” pentru a oferi o remiza. Asta ofera control celuilalt jucator, care poate accepta apasand (select) sau refuza apasand orice altceva.

Fiecare jucator are un timp fix pentru a realiza mutarile. In cazul in care nu se incadreaza in timp, jocul va executa o mutare la intamplare.

Un led este aprins de partea jucatorului activ pentru a indica a cui tura este.

Jucatorii pot (select)a “CONCEDE” pentru a renunta si a oferi victoria oponentului.

In momentul in care un joc se incheie, jucatorul a carui led este aprins trebuie sa apese oricare buton pentru a porni un nou joc.

Hardware Design

Lista componentelor:

  • 2 LED
  • 1 placa Arduino UNO
  • 1 LCD 128×64
  • 10 butoane
  • 10 rezistoare
  • Cabluri

Pinul 4 alimenteaza LED-ul jucatorului 1. Pinul 5 alimenteaza LED-ul jucatorului 2.

Pinul 2 alimenteaza butoanele jucatorului 1. Pinul 3 alimenteaza butoanele jucatorului 2.

Ambele circuite sunt conectate la pinul A2, de pe care se citeste tensiunea aferenta fiecarui buton. Fiecare din butoane scurtcircuiteaza un numar de rezistente pentru a modifica tensiunea de pe A2.

Daca sunt apasate mai multe butoane deodata, butonul cel mai la stanga (din perspectiva jucatorului activ) are prioritate, deoarece sunt scurt-circuitate toate rezistentele de la dreapta butonului.

Pinii 10 si 11 transmit date LCD-ului. 12 este clock-ul.

Pinul GND al LCD-ului este conectat la GND-ul de pe Arduino. Pinul VCC al LCD-ului este conectat la 5V.

Pinii BLA si BLK controleaza luminozitatea ecranului si sunt conectati la 3.3V si GND, respectiv.

Codul (orientativ) de culoare pentru cabluri este:

  • Verde pentru circuitele cu LEDuri
  • Alb-galben-gri deschis pentru conexiunile butoanelor care scurtcircuiteaza rezistente
  • Portocaliu pentru 3.3V
  • Rosu pentru 5V
  • Negru si maro pentru ground
  • Maro pentru conexiunea cu A2

Software Design

Mediul de dezvoltare este IDE-ul Arduino.

Datele care trebuiesc afisate pe ecran sunt reprezentate printr-un sir de 128×64 biti.

Tabla de sah este de dimensiune 64×64, fiecare patrat fiind 8×8. Programul are o matrice de 8×8 char pe care o foloseste pentru a calcula starile jocului.

Bitii de pe ecran sunt setati prin aplicarea unor masti hardcodate care reprezinta fiecare element de UI.

Jucatorii au un cursor, stocand o pozitie pe tabla de joc.

Se genereaza o intrerupere la fiecare masuratoare pe pin analogic pentru a detecta daca butoanele au fost apasate.

Se genereaza o intrerupere la fiecare secunda pentru a decrementa timerul jucatorului activ.

Am folosit biblioteca U8G2 pentru a scrie pe LCD.

Rezultate Obţinute

Un joc de sah cu ecran LCD.

Download

Bibliografie/Resurse

pm/prj2023/adarmaz/joc_de_sah.txt · Last modified: 2023/05/26 23:08 by victor.moldovan
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