Differences

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

Link to this comparison view

pm:prj2023:alexau:ponggame [2023/05/05 18:30]
cerasela.enus created
pm:prj2023:alexau:ponggame [2023/05/28 22:19] (current)
cerasela.enus [Software Design]
Line 12: Line 12:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-{{:​pm:​prj2023:​alexau:​schema.png?​nolink&​300 |}}+{{ :​pm:​prj2023:​alexau:​schema_pg_ec.png?​nolink&​300 |}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 20: Line 20:
   * Placă Arduino Uno   * Placă Arduino Uno
   * Ecran color OLED   * Ecran color OLED
 +  * Buzzer
   * Butoane   * Butoane
   * Breadboard   * Breadboard
   * Fire de conexiune   * Fire de conexiune
 </​note>​ </​note>​
- +{{ :​pm:​prj2023:​alexau:​thinkercad_ec.png?nolink |}}
-{{:​pm:​prj2023:​alexau:​thinkercad.png?nolink |}}+
  
 ===== Software Design ===== ===== Software Design =====
- 
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei (firmware)+ 
-  * mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR+{{:pm:​prj2023:​alexau:​pong_game_ec.zip|}} 
-  * librării şsurse 3rd-party ​(e.gProcyon AVRlib) +{{:​pm:​prj2023:​alexau:​video.zip|}} 
-  * algoritmi şstructuri pe care plănuiţsă le implementaţ+ 
-  ​* ​(etapa 3surse şfuncţii implementate+La începutul codului sunt incluse mai multe biblioteci necesare pentru controlul afișajului OLED, butoanelor și buzzer-ului. 
 + 
 +Se definesc mai multe constante și variabile globale pentru a configura și a stoca starea jocului, inclusiv coordonatele bilei, direcțiile ​de deplasare, scorurile jucătorilor și pozițiile paletei pentru jucătorul și calculatorul controlate de cod. 
 + 
 +Funcțiile setup_interrupts() și setup() sunt responsabile pentru inițializarea hardware-ului și a afișajului OLEDÎn setup_interrupts()se configurează intrările de întreruperi pentru butoanele de sus și jos, iar în setup(se inițializează afișajul OLED. 
 + 
 +Funcția ISR(INT0_vect) este o rutină de întrerupere pentru butonul de sus șISR(INT1_vect) este o rutină de întrerupere pentru butonul de josAceste rutine sunt declanșate atunci când se detectează o schimbare de stare a butoanelor și setează variabilele up și down în funcție de starea butoanelor
 + 
 +Funcția loop() conține logica principală a jocului șeste executată într-un ciclu continuu. În fiecare iterație a buclei, se verifică dacă a sosit momentul de actualizare a poziției bilei sau a paletei șse efectuează acțiunile corespunzătoare. De asemenea, se verifică dacă un jucător a marcat un punct șse afișează scorul pe afișajul OLED. Jocul se oprește atunci când un jucător atinge scorul de 5. 
 + 
 +Funcția resetGame() este responsabilă de resetarea stării jocului la începutul fiecărei runde, inclusiv resetarea poziției bilei, direcțiilor de deplasare șa pozițiilor paletei. 
 + 
 +Funcția drawCourt() desenează terenul de joc pe afișajul OLED, adică un chenar alb de dimensiune 128x64 pixeli. 
 + 
 +În general, codul implementează logica de bază a jocului Pong și utilizează afișajul OLED și butoanele pentru a permite unui jucător să controleze o paletă și să joace împotriva calculatorului. 
 + 
 +La final se afiseaza scorul. 
 </​note>​ </​note>​
 +
 +{{:​pm:​prj2023:​alexau:​whatsapp_image_2023-05-28_at_16.39.27.jpeg?​nolink&​300|}}{{ :​pm:​prj2023:​alexau:​whatsapp_image_2023-05-28_at_16.39.27_2_.jpeg?​nolink&​300|}}
 +
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
pm/prj2023/alexau/ponggame.1683300657.txt.gz · Last modified: 2023/05/05 18:30 by cerasela.enus
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