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

  • Modul Ecran Tactil 2.4' TFT LCD
  • Buzzer pasiv
  • Arduino Uno R3 ATmega328P
  • Breadboard
  • Fire, Rezistente, etc

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

pm/prj2023/dene/shogi.txt · Last modified: 2023/05/30 06:37 by adrian_emanuel.dicu
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