Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:danield:tictactoe [2023/05/19 19:40]
eduard.petcu
pm:prj2023:danield:tictactoe [2023/05/28 23:38] (current)
eduard.petcu [Rezultate Obţinute]
Line 1: Line 1:
 ====== TicTacToe ====== ====== TicTacToe ======
-Student: Petcu Eduard +Student: Petcu Eduard ​\\
 Grupa: 334CC Grupa: 334CC
  
Line 7: Line 6:
  
 Pentru acest proiect, voi implementa jocul de X si O pe un ecran de LCD SPI de 1.8". Pentru acest proiect, voi implementa jocul de X si O pe un ecran de LCD SPI de 1.8".
-Cei doi jucatori vor putea controla ​un joystick ​pentru a face o mutare.+Acesta va putea fi jucat fie de catre 2 jucatori, in modul ''​P v P''​ fie de catre un singur jucator in modul ''​P v Com''​. 
 +Controlul jocului va avea loc exclusiv din joystick.
  
 Am ales sa pornesc pe ideea aceasta intrucat am vrut sa imbin invatarea programarii Am ales sa pornesc pe ideea aceasta intrucat am vrut sa imbin invatarea programarii
Line 13: Line 13:
 de imagini pe un LCD. de imagini pe un LCD.
  
-Proiectul are ca scop realizarea unui joc utilizand componente hardware.+Proiectul are ca scop realizarea unui joc standard ​utilizand componente hardware.
  
 ===== Descriere generală ===== ===== Descriere generală =====
Line 41: Line 41:
 {{ :​pm:​prj2023:​danield:​schema_electrica_ttt.png?​500 |}} {{ :​pm:​prj2023:​danield:​schema_electrica_ttt.png?​500 |}}
 ===== Software Design ===== ===== Software Design =====
 +Pentru implementarea partii software a jocului de TicTacToe am inclus bibliotecile ''​SPI.h''​ si
 +''​TFT.h''​. \\ In functia ''​setup()''​ am configurat LED-ul RGB, ecranul LCD si joystick-ul si am randat meniul principal
 +din care jucatorul poate alege daca sa joace contra unui alt jucator sau contra calculatorului. \\ 
 +In functia ''​loop()''​ se asteapta ca jucatorul sa aleaga unul din cele 2 moduri de joc. \\ \\
 +La inceperea jocului, se apeleaza una din functiile ''​PvPGame()''​ sau ''​PvComGame()'',​ care se ocupa de jocul de TicTacToe propriu-zis. \\ \\
 +In cele doua functii, se verifica daca jocul nu este terminat (in metoda ''​resultOfGame()''​). In cazul in care meciul este inca in 
 +desfasurare,​ se verifica daca a avut loc o mutare a cursorului pe tabla de X si O. Verificarea are loc in functia ''​moveCursor()''​ la fiecare
 +500 ms folosind tehnica de debounce. La apasarea joystick-ului,​ se verifica daca mutarea dorita este una valida iar in caz contrar, un sunet corespunzator se va auzi la buzzer. \\ \\
 +Metoda ''​endGameText(int result)''​ este apelata la finalul jocului, iar in functie de rezultatul partidei, se va afisa:
 +  * X won! 
 +  * O won!
 +  * DRAW!
 +pe ecran timp de 5 secunde. \\ \\
 +LED-ul RGB este folosit in modul de ''​PvP''​ pentru a indica ce jucator trebuie sa faca o mutare (culoarea rosu -> X trebuie sa mute; culoarea albastra -> O trebuie sa mute). De asemenea, acesta se aprinde la finalul jocului in culoarea jucatorului castigator sau in culoarea galbena (daca rezultatul este o remiza).
  
 +===== Rezultate Obţinute =====
  
-<note tip> +Schema electrica: 
-Descrierea codului aplicaţiei (firmware): +{{ :pm:​prj2023:​danield:​ttt-fizic.jpeg?200 |}}
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * 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 +
-</​note>​+
  
-===== Rezultate Obţinute =====+Meniu principal:​ 
 +{{ :​pm:​prj2023:​danield:​ttt-mainmenu.jpeg?​200 |}}
  
-<note tip> +Tabla de joc: 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+{{ :​pm:​prj2023:​danield:​ttt-tablepvp.jpeg?200 |}} 
-</​note>​+ 
 +Victorie X: 
 +{{ :​pm:​prj2023:​danield:​ttt-x-won.jpeg?​200 |}} 
 + 
 +Remiza: 
 +{{ :​pm:​prj2023:​danield:​ttt-draw.jpeg?​200 |}}
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +Experienta de lucru la acest proiect a fost mai placuta decat ma asteptam intrucat am reusit sa aplic cunostintele invatate in cadrul laboratorului si am reusit sa realizez tot ce mi-am propus. Cel mai mult mi-a placut sa lucrez la partea software deoarece fiecare functie implementata avea un impact vizual pe LCD. \\ De asemenea, mi-a placut sa lucrez cu functiile din biblioteca ''​Adafruit_GFX.h''​ intrucat functionau similar cu functiile din framework-ul folosit la cursul de // Elemente de Grafica pe Calculator//​.
 ===== Download ===== ===== Download =====
- +Codul sursa se poate gasi in arhiva
-<note warning>​ +{{:pm:prj2023:danield:tictactoe.zip|}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +
- +
-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**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * 2 mai - achizitionarea componentelor hardware necesare proiectului 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul ​proiectului. +  * 17 mai - configurarea partii hardware a proiectului ​si verificarea ca toate componentele functioneaza 
-</​note>​ +  * 20 mai - inceputul design-ului software 
 +  * 27 mai - finalizarea partii software a proiectului
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
- +https://eessential.blogspot.com/​2017/​12/​18-128-x-160-tft-lcd.html?m=1 \\ 
-  * [[https://ocw.cs.pub.ro/courses/pa/tutoriale/minimax]]+https://docs.arduino.cc/​library-examples/tft-library/TFTDisplayText
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2023/danield/tictactoe.1684514428.txt.gz · Last modified: 2023/05/19 19:40 by eduard.petcu
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