Mini Chess
Nume: Lazaroiu Lucas
Grupa: 333CB
Introducere
Este un joc de mini-sah (tabla de 5×5)
Un mod rapid de a petrece timpul cu inca o persoana.
Initial am vrut sa fac un joc de sah normal, dar am realizat ca unul mai micut adauga un factor de ineditate si, avand in vedere ca ecranul este foarte mic, se va termina mult mai rapid.
Ideal se joaca in doua persoane, dar ar putea fi interesanta si analiza solo pentru aceasta varianta minimala de sah.
Descriere generală
Se vor urma exact aceleasi reguli ca si in jocul normal de sah, cu cateva exceptii. Pionii nu se pot muta 2 spatii de pe pozitia de start si nu se vor face rocade (aceaste reguli au fost implementate pentru a mari viteza meciului, nu e cazul pentru 5×5). Ca si consecinta, nici en-passant nu exista.
Hardware Design
Schema bloc:
Componente necesare:
Arduino Uno R3
ECRAN LCD 1.8”
Breadboard x 2
Buzzer
7 Butoane
Fire
Schema Electrica:
Software Design
Mediu de dezvoltare: Arduino IDE
S-au folosit intreruperi pentru butoane, PWM pentru buzzer, si comunicarea cu LCD-ul se face cu protocolul SPI
O matrice 5×5 este folosita pentru starea curenta a board-ului
6 perechi de vectori sunt folosite pentru stocarea pixelilor pieselor. Folosind acesti vectori se poate afla reprezentarea 25×25 a pieselor
Codul este modularizat. Foarte multe functii au fost create pentru usurinta in dezvoltare si urmarire a logicii programului
Memoria folosita de program (nu de cod) este la limita de 2KB impusa de placuta Arduino.
Rezultate Obţinute
Concluzii
Proiectul este complet functional: de la generarea pieselor si a tablei, pana la logica jocului si functionalitatea buzzerului si a butoanelor.
Download
Jurnal
Pixel-art pentru piese in Paint
Scris de mana pixelii intr-un format matrice char[25][25]
Comandat piese (doar un breadboard)
Conectat LCD la Arduino (si testat)
Logica de generare a tablei/pieselor pe ecranul LCD
Scris un program care transforma fiecare matrice char[25][25] in 2 vectori pentru reducerea memoriei
Inlocuit matricile cu vectorii obtinuti
Implementat un cursor minimal ce se poate muta pe tabla stanga-dreapta si select/undo (cu 4 butoane)
Cumparat inca un breadboard + extra fire
Mutat butoanele pe al doilea breadboard si adaugat inca 3 butoane (sus, jos, reset)
Implementat logica pentru mutarea pieselor
Implementat logica pentru mutarea legala a pieselor
Implementat logica pentru update-ul jocului pe masura ce sunt facute mutari
Conectat buzzer-ul la Arduino
Implementat logica de final de joc, anuntata de buzzer in 2 moduri (draw, win/loss)
Finishing touches (Draw by no progress, Draw by insufficient material, mutat bishop-ul pe un dark square pentru a face knight-bishop mate posibil, adaugat logica promovare pion)
Bibliografie/Resurse