Proiectul își propune realizarea unei variante simplificate a unui joc de sah, minichess 4×5.
Schema electrică:
Implementare fizică:
Link Github:
https://github.com/andreiboieriu/Minichess
Mediu de dezvoltare:
Visual Studio Code + avr-g++ / avrdude pentru compilare / uploadare cod pe microcontroller
Biblioteci și surse 3rd party:
- https://github.com/monoclecat/avr-millis-function pentru funcția millis()
- laboratoarele de UART, ADC si I2C
Descrierea implementării:
Codul a fost scris în C++, folosind următoarele clase pentru componentele importante:
Jocul este structurat sub forma unui state machine, cu următoarele stări:
Din meniul principal la apăsarea butonului de start, se va începe jocul, trecând în starea SELECTING_PIECE. Jucătorul selectează apoi o piesă folosind cele 4 butoane din stânga ecranului pentru a naviga prin ele și butonul de start pentru a efectua selecția, trecând în starea SELECTING_MOVE. În această stare jucătorul poate naviga prin mutările posibile și selecta o mutare, sau se poate întoarce în starea anterioara, pentru a selecta altă piesă. După efectuarea unei mutări, jocul trece în starea SELECTING_PIECE, de data aceasta pentru celălalt jucător. Când se ajunge la un șah mat sau o egalitate, jocul trece în starea END_SCREEN, unde este afișat rezultatul jocului.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.