Differences

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

Link to this comparison view

pm:prj2025:czlatea:andrei.ignat [2025/05/18 13:16]
andrei.ignat [Rezultate Obţinute]
pm:prj2025:czlatea:andrei.ignat [2025/05/25 19:24] (current)
andrei.ignat [Rezultate Obţinute]
Line 108: Line 108:
  
 ===== Software Design ===== ===== Software Design =====
 +
 +
  
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei ​(firmware): +Bibliotecile folosite: 
-  * mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR+ 
-  * librării şsurse 3rd-party ​(e.gProcyon AVRlib+1. <​SPI.h>​ 
-  * algoritmi şstructuri pe care plănuiţi să le implementaţi +Motivație:​ 
-  ​* ​(etapa 3surse şfuncţii implementate+Biblioteca SPI.h este necesară deoarece ecranul TFT utilizează protocolul de comunicare SPI (Serial Peripheral Interfacepentru transmiterea datelor. 
 + 
 +Rol
 +Asigură comunicarea rapidă și eficientă între microcontroller (de exemplu, Arduino) și display. 
 + 
 +2. <​Adafruit_GFX.h>​ 
 +Motivație:​ 
 +Biblioteca Adafruit_GFX oferă o interfață grafică generală pentru desene, texte, forme și linii, compatibilă cu o gamă largă de display-uri. 
 + 
 +Rol: 
 +Oferă funcții pentru desenarea de linii, dreptunghiuri,​ texte etc. 
 +Abstractizează partea grafică, permițând o codare simplificată și portabilă. 
 + 
 +Exemplu de utilizare:​ 
 +drawRect, drawLine, setCursor, print, setTextColor,​ etc. 
 + 
 +3. <​Adafruit_ST7735.h>​ 
 +Motivație:​ 
 +Această bibliotecă este specifică pentru controlul display-urilor TFT care folosesc driverul ST7735, foarte popular în proiectele cu Arduino. 
 + 
 +Rol: 
 +Inițializează ecranul TFT. 
 +Controlează afișajul color și dimensiunile acestuia. 
 +Se integrează perfect cu Adafruit_GFX pentru redarea conținutului grafic. 
 + 
 +void drawStartScreen() 
 +Ce face: 
 +Afișează pe ecran meniul de start, unde utilizatorul poate alege între „Vs Bot” și „Vs Player”. 
 + 
 +Detalii: 
 + 
 +Evidențiază opțiunea selectată cu un chenar roșu. 
 +Afișează instrucțiuni pentru butoane: Select = schimbă opțiunea, OK = start joc. 
 + 
 +void drawWinnerScreen(int winner) 
 +Ce face: 
 +Afișează un ecran de final cu rezultatul jocului: „X câștigă”,​ „O câștigă” sau „Remiză”. 
 + 
 +Detalii: 
 +Schimbă culoarea textului în verde pentru câștigător. 
 +Afișează instrucțiuni pentru a relua jocul. 
 + 
 +void drawBoard() 
 +Ce face: 
 +Desenează tabla de joc (3x3) și plasează X sau O în funcție de mutările făcute. 
 + 
 +Detalii: 
 +Desenează liniile care împart ecranul în 9 pătrate. 
 +Evidențiază pătratul selectat cu un chenar galben. 
 +Desenează „X” cu roșu și „O” cu albastru în pătratele ocupate. 
 + 
 +int checkWinner() 
 +Ce face: 
 +Verifică dacă există un câștigător sau remiză. 
 + 
 +Returnează:​ 
 +1 → dacă X a câștigat 
 +2 → dacă O a câștigat 
 +3 → dacă remiză (tabla e plină) 
 +0 → jocul continuă 
 + 
 +void botMove() 
 +Ce face: 
 +Realizează o mutare automată pentru bot (jucătorul O). 
 + 
 +Strategie:​ 
 +Verifică dacă botul poate câștiga → joacă acolo. 
 +Dacă nuverifică dacă trebuie să blocheze X → blochează. 
 +Dacă nu, joacă pe poziții preferate (mijloc, colțuri etc). 
 +Include: feedback sonor și redesenarea tablei. 
 + 
 +void resetGame() 
 +Ce face: 
 +Resetează toate variabilele pentru a începe un nou joc. 
 + 
 +Detalii: 
 +Șterge tabla (board[]), resetează jucătorul șindicatorii ​(gameOver, winner). 
 +Apelează drawBoard() pentru a afișa o tablă goală. 
 + 
 +void setup(
 +Ce face: 
 +Este apelată o singură dată la pornirea plăcii Arduino. 
 + 
 +Inițializează:​ 
 +Pinurile pentru butoane șbuzzere. 
 +Ecranul TFT (rotire, modul de inițializare). 
 +Afișează ecranul de start (drawStartScreen()). 
 + 
 +void loop() 
 +Ce face: 
 +Este funcția ​care rulează în buclă continuu șgestionează logica principală a jocului. 
 + 
 +Structură logică: 
 +Dacă jocul nu a început: permite selectarea modului de joc. 
 +Dacă jocul s-a terminat: permite revenirea la ecranul de start. 
 +Dacă jocul e activ: 
 +Citire buton SELECT → mută cursorul pe tablă. 
 +Citire buton OK → plasează X sau O. 
 +Verifică dacă există câștigător sau remiză. 
 +Dacă e modul Vs Bot și e rândul lui → apelează botMove()
 + 
 + 
 +În proiectul Tic-Tac-Toe cu ecran TFT șbutoane, optimizările au fost realizate pentru a îmbunătăți:​ 
 +-Viteza de reacție și claritatea interfeței 
 +-Ușurința în utilizare 
 +-Citirea clară a codului 
 +-Reducerea resurselor folosite (memorie, sunete inutile etc. 
 + 
 + 
 </​note>​ </​note>​
  
Line 122: Line 233:
 <note tip> <note tip>
 Rezultate obținute in proiect. Rezultate obținute in proiect.
-https://​youtube.com/​shorts/​gUEhmS1PZkU?feature=share+https://​youtube.com/​shorts/​mDymTbDc0fk?si=P2lqlXAzB6K4TqPN
 </​note>​ </​note>​
  
-===== Concluzii ===== 
- 
-===== Download ===== 
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script ​de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +Schelet ​de cod 
- +{{:pm:prj2025:czlatea:pm1.zip|}}
-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>​ </​note>​
  
pm/prj2025/czlatea/andrei.ignat.1747563397.txt.gz · Last modified: 2025/05/18 13:16 by andrei.ignat
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