Differences

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

Link to this comparison view

pm:prj2023:alexau:pac-man [2023/05/27 19:05]
andreea_sabina.dinu [Software Design]
pm:prj2023:alexau:pac-man [2023/05/27 19:18] (current)
andreea_sabina.dinu [Concluzii]
Line 56: Line 56:
    
  La inceputului jocului, este redata o melodie de start, urmata de un mesaj de Welcome si intructiuni pentru joc. Scopul jocului este să colectezi inimioarele reprezentate pe ecran, evitând fantomele care sunt afisate pe exran. Fantomele pot fi evitate de către Pac-Man, iar când este atins de o fantomă, jocul se încheie cu un semnal sonor si cu afisarea scorului curent, dar si a highscore-ului. Jucătorul poate controla mișcarea lui Pac-Man(sus/​jos) folosind joystickul.  La inceputului jocului, este redata o melodie de start, urmata de un mesaj de Welcome si intructiuni pentru joc. Scopul jocului este să colectezi inimioarele reprezentate pe ecran, evitând fantomele care sunt afisate pe exran. Fantomele pot fi evitate de către Pac-Man, iar când este atins de o fantomă, jocul se încheie cu un semnal sonor si cu afisarea scorului curent, dar si a highscore-ului. Jucătorul poate controla mișcarea lui Pac-Man(sus/​jos) folosind joystickul.
-{{:​pm:​prj2023:​alexau:​play_f.png?​200|}} + 
-{{ :​pm:​prj2023:​alexau:​gameover.png?​200|}}+ 
 + 
 +{{:​pm:​prj2023:​alexau:​play_f.png?​300|}} 
 +{{ :​pm:​prj2023:​alexau:​gameover.png?​300|}} 
 + 
  
 În implementarea acestui joc, se folosesc întreruperi pentru a detecta mișcarea joystickului. În fiecare ciclu de joc, se citește valoarea ADC a joystickului pentru a determina poziția acestuia. Dacă joystickul este mișcat, se declanșează o întrerupere care semnalează că joystickul a fost mutat. Apoi, în funcția loop(), se verifică starea jocului și se execută acțiunile corespunzătoare. În implementarea acestui joc, se folosesc întreruperi pentru a detecta mișcarea joystickului. În fiecare ciclu de joc, se citește valoarea ADC a joystickului pentru a determina poziția acestuia. Dacă joystickul este mișcat, se declanșează o întrerupere care semnalează că joystickul a fost mutat. Apoi, în funcția loop(), se verifică starea jocului și se execută acțiunile corespunzătoare.
Line 66: Line 71:
 -STATE_PLAY:​ Starea de joc. În această stare, jucătorul controlează mișcarea lui Pac-Man pentru a colecta inimioarele și a evita fantomele. Scorul este actualizat în timp real pe afișajul LCD. -STATE_PLAY:​ Starea de joc. În această stare, jucătorul controlează mișcarea lui Pac-Man pentru a colecta inimioarele și a evita fantomele. Scorul este actualizat în timp real pe afișajul LCD.
 -STATE_GAMEOVER:​ Starea de sfârșit a jocului. În această stare, se afișează un mesaj de game over și se redă o melodie de sfârșit a jocului. -STATE_GAMEOVER:​ Starea de sfârșit a jocului. În această stare, se afișează un mesaj de game over și se redă o melodie de sfârșit a jocului.
-{{ :​pm:​prj2023:​alexau:​play.png?​200 |}}+ 
 + 
 +{{ :​pm:​prj2023:​alexau:​play.png?​300 |}}
  
 Jocul utilizează o serie de structuri și variabile pentru a gestiona sprite-urile (personaje) și starea jocului. De exemplu, există o structură pentru fiecare sprite care conține informații despre poziția și tipul sprite-ului. Jocul utilizează o serie de structuri și variabile pentru a gestiona sprite-urile (personaje) și starea jocului. De exemplu, există o structură pentru fiecare sprite care conține informații despre poziția și tipul sprite-ului.
-{{ :​pm:​prj2023:​alexau:​variabile.png?​200 |}} 
  
 +{{ :​pm:​prj2023:​alexau:​variabile.png?​300 |}}
 +
 +În codul furnizat, se folosesc întreruperile pentru a trata mișcarea joystick-ului. Prin intermediul întreruperii PCINT1 (Pin Change Interrupt 1), se detectează schimbările de stare pe pinul A1 (PC1). Atunci când joystick-ul este mutat în sus sau în jos, se declanșează o întrerupere și se setează variabila joystickMoved pe true. Această variabilă este ulterior verificată în funcția loop() pentru a determina acțiunea corespunzătoare.
 +
 +
 +{{:​pm:​prj2023:​alexau:​intrerupere1.png?​300|}}
 +{{ :​pm:​prj2023:​alexau:​intrerupere2.png?​300|}}
 +
 +
 +
 +În funcția setup(), se configurează întreruperea și se activează ADC (Analog-to-Digital Converter). Pinul A1 (PC1) este setat ca pin de intrare, iar ADMUX (ADC Multiplexer Selection Register) și ADCSRA (ADC Control and Status Register A) sunt configurați corespunzător. În funcția loop(), se realizează citirea valorii analogice de pe pinul A1 folosind ADC. Această valoare reprezintă poziția joystick-ului pe axa Y și este stocată în variabila yValue. Apoi, întreruperile sunt dezactivate temporar (cli()) pentru a evita modificări ale valorii în timpul verificărilor.
 +
 +În funcția play(), valoarea yValue este utilizată pentru a determina poziția curentă a joystick-ului și pentru a controla mișcarea lui Pac-Man în sus și în jos în funcție de aceasta.
 +
 +ADC este folosit pentru a citi valorile analogice de la joystick și a le transforma în valori digitale pe care Arduino le poate procesa. Această conversie analog-digitală se realizează prin setarea corespunzătoare a registrelor ADMUX și ADCSRA și prin apelarea funcției analogRead() în care se specifică pinul analog de citire. Valoarea digitală rezultată este stocată în variabila yValue și este utilizată ulterior în funcția play() pentru a controla mișcarea Pac-Man.
 +
 +{{ :​pm:​prj2023:​alexau:​adc.png?​300 |}}
 ===== Concluzii ===== ===== Concluzii =====
 {{ :​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_19.33.07.jpeg?​300 |}} {{ :​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_19.33.07.jpeg?​300 |}}
 +
 {{ :​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_19.33.06.jpeg?​300 |}}  {{ :​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_19.33.06.jpeg?​300 |}} 
 +
 {{ :​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_19.33.07_1_.jpeg?​300 |}} {{ :​pm:​prj2023:​alexau:​whatsapp_image_2023-05-21_at_19.33.07_1_.jpeg?​300 |}}
 +
 {{ :​pm:​prj2023:​alexau:​new.jpeg?​300 |}} {{ :​pm:​prj2023:​alexau:​new.jpeg?​300 |}}
  
pm/prj2023/alexau/pac-man.1685203510.txt.gz · Last modified: 2023/05/27 19:05 by andreea_sabina.dinu
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