This is an old revision of the document!
Librarii: LiquidCrystal_I2C.h
Structuri si algoritmi:
State machine cu stari: diffSelect, gameOver, selectMode pentru controlul fluxului de executie
Timer non-blocking bazat pe millis() pentru countdown-ul in timp real
Debouncing software cu interval de 300ms pentru stabilitatea butoanelor si prevenirea apasarilor multiple
Algoritm de construire progresiva a numarului (cifra cu cifra) adaptat pe dificultate:
Easy (1-10): doar unitati
Medium (1-100): zeci + unitati
Hard (1-1000): sute + zeci + unitati
Generator aleator pentru randomizare cu randomSeed
Sistem de feedback audio adaptat cu frecvente variabile bazate pe proximitatea ghicirii
PWM si tone() pentru controlul buzzer-ului si generarea tonurilor
Algoritm de verificare cu feedback directional (prea mic/prea mare)
Sistem de proximitate inteligent cu praguri adaptive in functie de dificultate
Functii implementate:
setup() – initializare hardware si configurare pin-uri
loop() – bucla principala cu gestionarea starilor
handleDiffSelect() – gestioneaza selectia si confirmarea nivelului de dificultate
initGame() – seteaza parametrii specifici dificultatii (limite, timp, pozitii cifre)
checkTime() – monitorizeaza timer-ul si actualizeaza display-ul in timp real
checkGuess() – compara numarul introdus cu cel ales random si ofera feedback
resetGuess() – reseteaza starea pentru o noua incercare fara restart complet
timeUp() – gestioneaza sfarsitul jocului cand timpul expira
showDiffMenu() – afiseaza meniul principal de selectare dificultate
showDiff() – afiseaza dificultatea curenta selectata
proximitySound() – calculeaza si reproduce feedback audio bazat pe distanta pana la raspuns
winSound() – melodie de victorie cu tonuri crescatoare
failSound() – sunet de esec cu tonuri descrescatoare
quickBeep(), shortBeep(), confirmBeep() – feedback audio pentru actiuni utilizator
Limitări identificate:
-Lipsa persistenței datelor la restart (scoruri, statistici)
-Feedback audio limitat la un singur buzzer (monoton)
-Interface fixă fără personalizare pentru utilizatori
-Dependența de alimentarea externă (fără baterie)
Ce mai poate fi adaugat:
-LED RGB pentru efecte vizuale mai complexe în loc de LED-urile simple
-Card SD pentru salvarea scorurilor și statisticilor de joc
-Mod Multiplayer - doi jucători alternează
-Mod Sprint - ghicește cât mai multe numere în timp limitat
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.