This shows you the differences between two versions of the page.
pm:prj2023:danield:tictactoe [2023/05/28 22:05] eduard.petcu [Software Design] |
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 49: | Line 49: | ||
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 | 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. \\ \\ | 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 fie "X won!", "O won!" sau "DRAW!" pe ecran timp de 5 secunde. \\ \\ | + | 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). | 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). | ||
- | |||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * 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 ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Schema electrica: |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{ :pm:prj2023:danield:ttt-fizic.jpeg?200 |}} |
- | </note> | + | |
+ | Meniu principal: | ||
+ | {{ :pm:prj2023:danield:ttt-mainmenu.jpeg?200 |}} | ||
+ | |||
+ | Tabla de joc: | ||
+ | {{ :pm:prj2023:danield:ttt-tablepvp.jpeg?200 |}} | ||
+ | |||
+ | 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: | Codul sursa se poate gasi in arhiva: | ||
Line 74: | Line 82: | ||
===== 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://eessential.blogspot.com/2017/12/18-128-x-160-tft-lcd.html?m=1 \\ |