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

Export to PDF

pm/prj2023/drtranca/mini-chess.txt · Last modified: 2023/05/29 13:15 by lucas.lazaroiu
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