Differences

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

Link to this comparison view

pm:prj2024:ccontasel:andreea.alexandru02 [2024/05/26 22:24]
andreea.alexandru02 [Concluzii]
pm:prj2024:ccontasel:andreea.alexandru02 [2024/05/27 14:09] (current)
andreea.alexandru02 [Software Design]
Line 20: Line 20:
 == Descriere sumară mod de funcționare == == Descriere sumară mod de funcționare ==
 <note tip> <note tip>
-Jocul implementat „Pong ​Revolition” funcționează după următorul mecanism de bază: jucătorii controlează fiecare o paletă pe tabla de joc și trebuie să lovească pucul pentru a-l trimite către adversar, scopul fiind marcarea punctelor prin trecerea pucului pe cealaltă parte a tablei de joc fără ca adversarul să-l returneze. Pe măsură ce jocul progresează,​ power-up-uri aleatorii apar pe tabla de joc. Acestea oferă avantaje sau dezavantaje temporare, modificând dinamica jocului. Pentru a captura un power-up jucătorul trebuie să își coordoneze mișcările astfel încât pucul sa intre în contact cu simbolul acestuia, activându-se automat. Mișcările vor fi ghidate prin utilizarea unui joystick care permite mișcări sus/jos, stânga/​dreapta pe un anumit perimetru.\\+Jocul implementat „Pong ​Revolution” funcționează după următorul mecanism de bază: jucătorii controlează fiecare o paletă pe tabla de joc și trebuie să lovească pucul pentru a-l trimite către adversar, scopul fiind marcarea punctelor prin trecerea pucului pe cealaltă parte a tablei de joc fără ca adversarul să-l returneze. Pe măsură ce jocul progresează,​ power-up-uri aleatorii apar pe tabla de joc. Acestea oferă avantaje sau dezavantaje temporare, modificând dinamica jocului. Pentru a captura un power-up jucătorul trebuie să își coordoneze mișcările astfel încât pucul sa intre în contact cu simbolul acestuia, activându-se automat. Mișcările vor fi ghidate prin utilizarea unui joystick care permite mișcări sus/jos, stânga/​dreapta pe un anumit perimetru.\\
 Jocul se va încheia fie când un jucător atinge un anumit număr de puncte, fie când timer-ul expiră.\\ Jocul se va încheia fie când un jucător atinge un anumit număr de puncte, fie când timer-ul expiră.\\
 De asemenea, jocul va interacționa în mod activ cu jucătorii prin lumini, sunete de victorie/​înfrângere,​ intervenții sonore redate de pe un card SD. De asemenea, jocul va interacționa în mod activ cu jucătorii prin lumini, sunete de victorie/​înfrângere,​ intervenții sonore redate de pe un card SD.
Line 110: Line 110:
          * Algoritmul de actualizare a scorului și resetare a poziției bilei.\\          * Algoritmul de actualizare a scorului și resetare a poziției bilei.\\
          * Gestionarea Scorului: Funcții pentru actualizarea și afișarea scorului pe ecran.\\          * Gestionarea Scorului: Funcții pentru actualizarea și afișarea scorului pe ecran.\\
-         * Controlul Jocului: Inițierea jocului la apăsarea unui buton de start.\\+         * Controlul Jocului: Inițierea jocului la apăsarea unui buton de start; restartarea jocului la apăsarea butonului joystick-ului.\\
          * Controlul buzzer-ului pentru semnalizarea evenimentelor de joc.\\          * Controlul buzzer-ului pentru semnalizarea evenimentelor de joc.\\
          * Controlul LED-ului pentru indicarea stării jocului.\\          * Controlul LED-ului pentru indicarea stării jocului.\\
Line 125: Line 125:
          * LED control: Funcții pentru activarea și dezactivarea LED-ului în diferite stări ale jocului (la startul jocului, la colectarea unui pickup verde, respectiv roșu).\\          * LED control: Funcții pentru activarea și dezactivarea LED-ului în diferite stări ale jocului (la startul jocului, la colectarea unui pickup verde, respectiv roșu).\\
 </​note>​ </​note>​
 +
 +
 +<note tip>
 +**Concepte Software folosite:​**\\
 +**-> ADC (Analog-to-Digital Converter)**:​\\
 +Citirea joystick-urilor:​ Valorile analogice de la joystick-uri sunt citite folosind pinii ADC ai Arduino (PLAYER1_X, PLAYER1_Y, PLAYER2_X, PLAYER2_Y). Aceste valori sunt convertite în semnale digitale pentru a controla mișcarea paletelor.\\
 +
 +**-> SPI (Serial Peripheral Interface)**:​\\
 +Controlul display-ului TFT: Display-ul TFT este controlat prin protocolul SPI folosind librăriile Adafruit_GFX și Adafruit_ST7735. Pinii TFT_CS, TFT_DC, și TFT_RST sunt folosiți pentru comunicarea SPI cu display-ul.\\
 +
 +**-> GPIO (General Purpose Input/​Output)**:​\\
 +Controlul LED-urilor: LED-urile sunt controlate folosind pini GPIO. De exemplu, pinul LED_PIN, LED_GREEN_PIN și LED_RED_PIN sunt definiți și utilizați pentru a indica diferite stări ale jocului.\\
 +
 +**-> Timere:**\\
 +Gestionarea pickup-urilor:​ Timer-ele sunt utilizate pentru a gestiona apariția și dispariția pickup-urilor pe ecran (PICKUP_APPEAR_INTERVAL,​ PICKUP_TIMEDOUT). Funcția millis() este folosită pentru a măsura timpul scurs și a declanșa evenimente la intervale regulate.\\
 +
 +**-> PWM (Pulse Width Modulation):​**\\
 +Controlul Buzzer-ului:​ Funcția tone() folosită pentru controlul buzzer-ului utilizează PWM pentru a genera sunetele necesare în timpul jocului.
 +</​note>​
 +
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului ​vostru.+În urma realizării proiectului, am obținut următoarele rezultate:​\\ 
 +-> Funcționarea Jocului: Am reușit implementez o variantă a jocului Pong pe display-ul TFT controlat de Arduino UNO.\\ 
 +-> Interfața Utilizator: Am dezvoltat o interfață grafică intuitivă pe display-ul TFT, utilizând bibliotecile Adafruit GFX și ST7735. Ecranul afișează clar mișcarea paletelor, mingii și scorul curent. De asemenea, am inclus mesaje de start și final de joc pentru o experiență utilizator îmbunătățită.\\ 
 +-> Controlul Joystick-ului:​ Am dezvoltat algoritmi pentru citirea valorilor analogice de la joystick-uri și controlul paletelor, oferind o reacție rapidă și precisă la mișcările jucătorilor.\\ 
 +-> Feedback Audio și Vizual: Implementarea buzzer-ului pentru semnalizarea evenimentelor de joc (cum ar fi coliziunea mingii sau punctarea unui gol) și a LED-urilor pentru indicarea stării jocului au adăugat un nivel suplimentar de interactivitate și feedback în timp real pentru jucători.\\ 
 +-> Gestionarea Pickup-urilor:​ Am adăugat o funcționalitate de "​pickup-uri"​ care apar aleator pe ecran, oferind bonusuri sau penalizări jucătorilor.\\ 
 +-> Documentare și Modularitate:​ Codul a fost bine documentat, iar funcțiile implementate au fost structurate modular, facilitând astfel înțelegerea și posibilele îmbunătățiri viitoare ale proiectului.\\ 
 + 
 +În concluzie, proiectul a atins obiectivele propuse, oferind o experiență de joc atractivă.\\ \\ 
 + 
 +**Demo** -> {{:​pm:​prj2024:​ccontasel:​pong_revolution_demo.zip|}}
 </​note>​ </​note>​
  
Line 137: Line 167:
  
 <​note>​ <​note>​
 +{{:​pm:​prj2024:​ccontasel:​alexandru_andreea_pong_revolution.zip|}}\\
 Sursă github: https://​github.com/​andreeaalexandru323cb/​PONG_revolution Sursă github: https://​github.com/​andreeaalexandru323cb/​PONG_revolution
 </​note>​ </​note>​
pm/prj2024/ccontasel/andreea.alexandru02.1716751474.txt.gz · Last modified: 2024/05/26 22:24 by andreea.alexandru02
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