Differences

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

Link to this comparison view

pm:prj2023:alexau:ponggame [2023/05/28 16:52]
cerasela.enus [Descriere generală]
pm:prj2023:alexau:ponggame [2023/05/28 22:19] (current)
cerasela.enus [Software Design]
Line 28: Line 28:
  
 ===== Software Design ===== ===== Software Design =====
 +
 +<note tip>
  
 {{:​pm:​prj2023:​alexau:​pong_game_ec.zip|}} {{:​pm:​prj2023:​alexau:​pong_game_ec.zip|}}
 +{{:​pm:​prj2023:​alexau:​video.zip|}}
  
-Se începe prin includerea bibliotecilor ​necesare pentru ​comunicarea cu afișajul OLED și alte componente.+La începutul codului sunt incluse mai multe biblioteci ​necesare pentru ​controlul ​afișajului ​OLED, butoanelor ​și buzzer-ului.
  
-Sunt definite ​variabile globale pentru ​butoanele de sus și de jos utilizate pentru mișcarea jucătorului.+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.
  
-Sunt definite ​și inițializate variabilele pentru poziția bilei, direcția de deplasare ​bileiratele ​de actualizare ​pentru ​mișcarea bilei și a paletelor, înălțimea paletei și pozițiile ​inițiale ale paletei CPU și jucătorului.+Funcțiile setup_interrupts() ​și setup() sunt responsabile pentru ​inițializarea hardware-ului și afișajului OLED. În setup_interrupts()se configurează intrările ​de întreruperi ​pentru ​butoanele de sus și josiar în setup() se inițializează afișajul OLED.
  
-Funcția ​setup() este apelată ​singură dată la pornirea programului ​și se ocupă de inițializarea afișajului OLEDDe asemenea, afișează un teren de joc gol pentru ​scurtă perioadă de timp.+Funcția ​ISR(INT0_vect) este o rutină de întrerupere pentru butonul de sus și 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() ​rulează într-o buclă continuă și gestionează mișcarea bilei și a paletelor în fiecare cadru.+Funcția loop() ​conține logica principală a jocului și 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 ​și se efectuează acțiunile corespunzătoare. De asemenea, se verifică dacă un jucător a marcat un punct și se afișează scorul pe afișajul OLED. Jocul se oprește atunci când un jucător atinge scorul de 5.
  
-În fiecare cadru, se verifică dacă trebuie actualizată poziția bilei. Dacă a trecut suficient timp de la ultima actualizare a bileise calculează noua poziție a bilei și se verifică dacă a lovit pereții verticalipereții orizontali sau paletele CPU și jucătorului. Dacă bilea lovit un obiect, scoate un sunet specific datorat buzzer-ului si direcția ei este inversata, iar noua poziție este calculată corespunzător.+Funcția resetGame() este responsabilă de resetarea stării jocului ​la începutul fiecărei rundeinclusiv resetarea ​poziției bilei, ​direcțiilor de deplasare ​și a pozițiilor paletei.
  
-În fiecare cadru, se verifică dacă trebuie actualizată poziția paletelor. Dacă a trecut suficient timp de la ultima actualizare a paletelor, se calculează noua poziție a paletei CPU pe baza poziției actuale a bilei și se verifică starea butoanelor pentru mișcarea paletei jucătorului. Apoise actualizează pozițiile paletei CPU și jucătorului și se desenează paletele pe afișaj.+Funcția drawCourt() desenează terenul ​de joc pe afișajul OLEDadică un chenar alb de dimensiune 128x64 pixeli.
  
-La fiecare cadru în care s-a produs o actualizarese actualizează afișajul ​pentru a reflecta noile poziții ale bilei și paletelor. +În generalcodul 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.
- +
-Funcția drawCourt() este folosită ​pentru a desena terenul de joc pe afișaj la începutul programului+
  
 La final se afiseaza scorul. La final se afiseaza scorul.
 +
 </​note>​ </​note>​
  
-{{:​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_21.05.52_2_.jpeg?​nolink&​300 |}}{{:​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_21.05.52_3_.jpeg?​nolink&​300 |}}+{{:​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.1685281921.txt.gz · Last modified: 2023/05/28 16:52 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