Differences

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

Link to this comparison view

pm:prj2025:vstoica:horia.moroianu3101 [2025/05/30 03:57]
horia.moroianu3101 [Software Design]
pm:prj2025:vstoica:horia.moroianu3101 [2025/05/30 04:34] (current)
horia.moroianu3101 [Software Design]
Line 86: Line 86:
 Codul este împărțit în 5 fișiere ce vor fi prezentate mai jos, ținând cont de funcționalitățile moduleleor. Deși acestea nu conțin particularități ale limbajului ''​C++'',​ am ales sa folosesc acest limbaj pentru compatibilitatea cu bibliotecile externe. Codul este împărțit în 5 fișiere ce vor fi prezentate mai jos, ținând cont de funcționalitățile moduleleor. Deși acestea nu conțin particularități ale limbajului ''​C++'',​ am ales sa folosesc acest limbaj pentru compatibilitatea cu bibliotecile externe.
  
-**//​main.cpp / main.h//**: conține implementarea principală a jocului+**//​main.cpp / main.h//**: conține implementarea principală a jocului.
  
 Programul este structurat sub forma unui atutomat cu 3 stări: Programul este structurat sub forma unui atutomat cu 3 stări:
Line 99: Line 99:
   * ''​score,​ high_score, lives''​ – folosite pentru a urmari progresul jucatorului   * ''​score,​ high_score, lives''​ – folosite pentru a urmari progresul jucatorului
  
 +**//​timers.cpp / timers.h//​**:​ realizează controlul duratei de aprindere a LED-urilor, generarea de sunete prin buzzer și extragerea unui seed pentru randomizare.
  
 +
 +Timer1 - Folosit pentru a controla cât timp rămâne aprins un LED.
 +  *''​initLedTimer()''​ – setează Timer1 în mod CTC, cu prescaler 1024 și OCR corespunzător MAX_LED_DELAY (2s).
 +  *''​startLedTimer()''​ – pornește cronometrarea si resetează TCNT1.
 +  *''​stopLedTimer()''​ – oprește timerul.
 +  *''​decreaseLedDelay()''​ – reduce treptat durata LED-ului (până la MIN_LED_DELAY),​ pentru a crește dificultatea jocului.
 +  *ISR ''​TIMER1_COMPA_vect''​ – semnalează timeout-ul LED-ului în main.cpp (led_timeout = true).
 +
 +Timer0 - Folosit pentru a genera tonuri audio la frecvențe date.
 +  *''​initBuzz()''​ – configurează Timer0 în mod CTC pentru ieșire pe pinul PD6 (OC0A).
 +  *''​buzz(freq,​ duration)''​ – redă un sunet la frecvența și durata cerută. Folosește ''​timer_freq_prescale()''​ pentru a calcula automat prescalerul și OCR-ul necesar si controlează durata folosind întreruperea ''​TIMER0_COMPA_vect''​. (//Cod inspirat din [[https://​pcarduino.blogspot.com/​2013/​10/​generating-tones-with-timers.html|acest]] articol.//)
 +
 +Random seed: ''​extractTimers()''​ – combină valorile din TCNT0, TCNT1 și TCNT2 într-un uint32_t pentru a genera un seed aleator folosit la alegerea LED-urilor.
 +
 +**//lcd.cpp / lcd.h//**: gestionează afișajul LCD al jocului (mesaje de început, de final, scor, și vieți).
 +  * vectorul ''​heart''​ reprezintă un caracter personalizat (o inimă stilizată),​ folosită pentru a reprezenta viețile jucătorului.
 +  *''​initLCD()''​ — inițializează LCD-ul și configurează simbolul inimă pentru afișare.
 +  *''​displayStart()''​ — afișează instrucțiunile inițiale pentru a porni jocul și controlul LED-urilor.
 +  *''​displayScore(lives,​ score)''​ — arată numărul de vieți rămase și scorul curent pe ecran.
 +  *''​displayGameOver(score,​ high_score)''​ — prezintă scorul final și high score-ul la încheierea jocului.
 +
 +**//​sounds.cpp / sounds.h//​**:​ se ocupă de redarea melodiilor și sunetelor pentru stările jocului.
 +  *''​playStart()''​ — melodie scurtă de început pentru startul jocului.
 +  *''​playWin()''​ — melodie de victorie la obținerea unui high score.
 +  *''​playFail()''​ — melodie de eșec/skip.
 +
 +**//​random.cpp / random.h//​**:​ modul de generare a numerelor pseudo-aleatoare,​ optimizat pentru microcontrolere.
 +  *''​setSeed(seed)''​ — inițializează generatorul cu o valoare externă pentru diversificarea secvenței de numere aleatoare.
 +  *''​nextRand()''​ — returnează un număr pseudo-aleator pe 8 biți folosind algoritmul ''​xorshift32''​ usor modificat. Acesta lucreaza doar cu operații bitwise și produce rapid valori pe 8 biți, folosite ulterior pentru selectarea celor 4 LED-uri.
  
  
pm/prj2025/vstoica/horia.moroianu3101.1748566629.txt.gz · Last modified: 2025/05/30 03:57 by horia.moroianu3101
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