Shogi
Student: Dicu Adrian-Emanuel
Grupa: 331CCb
Introducere
Proiectul meu reprezinta realizarea unui joc de “Sah Japonez” (Shogi) pe un ecran LCD touchscreen. Scopul principal al proiectului este de a prezenta acest joc mai putin cunoscut publicului larg, in special studentilor pasionati de sah, si de a-i ajuta sa-l invete si sa-l joace.
Pentru a face jocul mai interactiv, am adaugat un buzzer care emite sunete la interactiunea utilizatorului cu ecranul.
Ideea de a dezvolta acest joc a venit din pasiunea mea pentru cultura japoneza si pentru jocurile de strategie. Am decis sa aduc la PM Fair acest joc care in speranta ca va atrage atentia publicului prin unicitatea lui.
Proiectul este util pentru mine, deoarece imi va permite sa imi dezvolt abilitatile tehnice pe partea de electronica. De asemenea, consider ca este util si pentru altii, deoarece va oferi o noua optiune de divertisment si va incuraja invatarea unui joc nou si interesant.
Descriere generală
Hardware Design
Lista de piese folosite
Software Design
Mediu de dezvoltare: Arduino IDE
Biblioteci si surse 3rd-party:
“SPFD5408_Adafruit_GFX.h” pentru grafica
“SPFD5408_Adafruit_TFTLCD.h” pentru ecranul LCD TFT
“SPFD5408_TouchScreen.h” pentru touchscreen
librării şi surse 3rd-party (e.g. Procyon AVRlib)
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
Implementare:
void setup()
void loop() → asteapta dupa o mutare, calculeaza pozitia unde s-a apasat, verifica daca este o mutare valida, iar in caz afirmativ executa mutarea, rescriind tabla
void drawBoard() → deseneaza gridul tablei, piesele si pozitiile unde se poate efecta o mutare valida
bool isValidSelection(int posX, int posY, char currentPlayer) → determina daca selectia piesei din casuta (posX, posY) de catre currentPlayer este valida
bool isSelectedBox(int posX, int posY, int selectedX, int selectedY) verifica daca (posX, posY) == (selectedX, selectedY)
char pieceType(char piece) → returneaza jucatorul ('A' sau 'B') care detine piece. Returneaza o valoare diferita daca piece nu e o piesa valida
void endGame(char player) → afiseaza ecranul final
void movePiece(int startX, int startY, int endX, int endY) → muta piesa din casuta (startX, startY) in casuta (endX, endY) (considera ca mutarea este valida)
bool isValidMove(int fromX, int fromY, int toX, int toY) → determina daca mutarea piesei din casuta (fromX, fromY) in casuta (toX, toY) este valida
bool checkLine(int fromX, int fromY, int toX, int toY) → determina daca toate casutele dintre (fromX, fromY) si (toX, toY) sunt libere
TSPoint waitTouch() → asteapta o apasare a ecranului si returneaza coordonata punctului apasat
void IntroScreen() → genereaza pagina de start a jocului
Rezultate Obţinute
Concluzii
Download
Arhiva care contine codul sursa, bibliotecile folosite, schema electrica, diagrama bloc, etc
Shogi.zip
Bibliografie/Resurse
Resurse Software
Laburile de PM

-
-
Resurse Hardware
* Arduino UNO pinout