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:59]
cerasela.enus [Software Design]
pm:prj2023:alexau:ponggame [2023/05/28 22:19] (current)
cerasela.enus [Software Design]
Line 29: Line 29:
 ===== Software Design ===== ===== Software Design =====
  
-{{:​pm:​prj2023:​alexau:​pong_game_ec.zip|}}+<note tip>
  
-Se începe prin includerea bibliotecilor necesare pentru comunicarea cu afișajul OLED și alte componente.+{{:​pm:​prj2023:​alexau:​pong_game_ec.zip|}} 
 +{{:​pm:​prj2023:​alexau:​video.zip|}}
  
-Sunt definite variabile globale ​pentru ​butoanele de sus și de jos utilizate pentru mișcarea jucătorului.+La începutul codului sunt incluse mai multe biblioteci necesare ​pentru ​controlul afișajului OLED, butoanelor ​și buzzer-ului.
  
-Sunt definite ​și inițializate variabilele ​pentru ​poziția ​bilei, direcția de deplasare ​a 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.+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ția setup() este apelată o singură dată la pornirea programului ​și se ocupă de inițializarea afișajului OLED. De asemeneaafișează un teren de joc gol pentru ​o scurtă perioadă ​de timp.+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 ​loop() rulează într-buclă continuă și gestionează mișcarea bilei și a paletelor ​în fiecare cadru.+Funcția ​ISR(INT0_vecteste o rutină de întrerupere pentru butonul de sus și ISR(INT1_vect) este rutină de întrerupere pentru butonul de jos. Aceste 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.
  
-În fiecare ​cadru, se verifică dacă trebuie actualizată poziția bilei. Dacă a trecut suficient timp de la ultima ​actualizare a bilei, se calculează noua poziție a bilei și se verifică dacă a lovit pereții verticali, pereții orizontali sau paletele CPU și jucătoruluiDacă bilea a 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 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 ​marcat un punct și se afișează scorul pe afișajul OLEDJocul se oprește atunci când un jucător atinge scorul de 5.
  
-În fiecare cadru, se verifică dacă trebuie actualizată poziția paletelor. Dacă a trecut suficient timp de la ultima actualizare a paletelorse 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. Apoi, se actualizează ​pozițiile paletei ​CPU și jucătorului și se desenează paletele pe afișaj.+Funcția resetGame() este responsabilă de resetarea stării jocului ​la începutul fiecărei rundeinclusiv resetarea ​poziției bilei, direcțiilor de deplasare ​și pozițiilor paletei.
  
-La fiecare cadru în care s-a produs o actualizare,​ se actualizează afișajul ​pentru a reflecta noile poziții ale bilei și paletelor.+Funcția drawCourt() desenează terenul de joc pe afișajul ​OLED, adică un chenar alb de dimensiune 128x64 pixeli.
  
-Funcția drawCourt() este folosită pentru a desena terenul ​de joc pe afișaj la începutul programului+Î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. La final se afiseaza scorul.
pm/prj2023/alexau/ponggame.1685282364.txt.gz · Last modified: 2023/05/28 16:59 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