Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:adarmaz:joc_de_sah [2023/05/06 15:43]
victor.moldovan
pm:prj2023:adarmaz:joc_de_sah [2023/05/26 23:08] (current)
victor.moldovan
Line 1: Line 1:
-Joc de sah+====== ​Joc de Sah - Moldovan Victor 343C4 ====== 
 +===== Introducere =====
  
-{{:pm:​prj2023:​adarmaz:​microsoftteams-image.png|}}+Prezentarea pe scurt: 
 +Acest proiect doreste sa implementeze un joc de sah 
  
-Jocul de sah este pornit in momentul in care cei 2 jucatori apasa "​○"​ **(select)**.+===== Descriere generală ===== 
 + 
 +{{:​pm:​prj2023:​adarmaz:​microsoftteams-image.png|}}
  
 Jucatorii pot naviga cu butoanele "​←",​ "​↑",​ "​→",​ "​↓",​ care muta cursorul pe tabla. Cursorul fiecarui jucator nu poate fi mutat decat atunci cand este tura acelui jucator. Jucatorii pot naviga cu butoanele "​←",​ "​↑",​ "​→",​ "​↓",​ care muta cursorul pe tabla. Cursorul fiecarui jucator nu poate fi mutat decat atunci cand este tura acelui jucator.
Line 10: Line 14:
  
 In cazul in care este apasat **(select)** pe altceva decat un spatiu valid, mutarea se anuleaza si trebuie **(select)**ata din nou o piesa. 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 **(select)**and "​TIE" ​sau refuza ​**(select)**and ​orice altceva.+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 ​mutarea. In cazul in care nu se incadreaza in timp, jocul va executa o mutare la intamplare.+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. 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.+Jucatorii pot **(select)**a "​CONCEDE"​ pentru a renunta si a oferi victoria oponentului.
  
-In momentul in care un joc se incheie, ​jucatorii ​trebuie sa apese (select) simultan ​pentru a porni un nou joc.+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.
  
 {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2023/​adarmaz/​pm_faculta_1_.png}} {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2023/​adarmaz/​pm_faculta_1_.png}}
 +
 +===== Hardware Design =====
 +
 +Lista componentelor:​
 +  * 2 LED
 +  * 1 placa Arduino UNO
 +  * 1 LCD 128x64
 +  * 10 butoane
 +  * 10 rezistoare
 +  * Cabluri
 +
 +Pinul 4 alimenteaza LED-ul jucatorului 1.
 +Pinul 5 alimenteaza LED-ul jucatorului 2.
 +
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2023/​adarmaz/​led.png}}
 +
 +Pinul 2 alimenteaza butoanele jucatorului 1.
 +Pinul 3 alimenteaza butoanele jucatorului 2.
 +
 +{{:​pm:​prj2023:​adarmaz:​butoane.png?​200|}}
 +
 +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 128x64 biti.
 +
 +Tabla de sah este de dimensiune 64x64, fiecare patrat fiind 8x8. Programul are o matrice
 +de 8x8 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 =====
 +
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
 +
 +===== Bibliografie/​Resurse =====
 +
 +https://​github.com/​olikraus/​u8g2 - Biblioteca u8g2.
 +
pm/prj2023/adarmaz/joc_de_sah.1683377019.txt.gz · Last modified: 2023/05/06 15:43 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