Differences

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

Link to this comparison view

pm:prj2023:avaduva:live_or_die [2023/05/28 14:31]
alexandru.mazur
pm:prj2023:avaduva:live_or_die [2023/05/31 16:03] (current)
alexandru.mazur [Bibliografie]
Line 1: Line 1:
-====== Live or Die <span style="​display:​ none;">​Mazur Alexandru</​span> ​======+====== Live or Die ======
  
 Inspirație:​ Scenele cu caracterul Jigsaw din filmul "Saw 3" Inspirație:​ Scenele cu caracterul Jigsaw din filmul "Saw 3"
Line 75: Line 75:
  </​html>​  </​html>​
  
-==== Test includere video (ignorati) ​==== +==== Software design ​====
-<​html>​ +
-  <iframe  +
-    src="​https://​www.youtube.com/​embed/​J0a2Prc_MQo"​  +
-    title="​YouTube video player"​  +
-    frameborder="​0"​  +
-    allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture;​ web-share"​  +
-    allowfullscreen +
-    style="​aspect-ratio:​ 16/9; width: 100%; display: none"​ +
-  ></​iframe>​ +
-</​html>​+
  
 +Iată principalele aspecte ale designului software și alegerile făcute:
  
-<​html>​ +**Biblioteci**:​ Scriptul utilizează biblioteca LiquidCrystal_I2C pentru gestionarea ​display-ului LCD, care este conectat folosind protocolul de comunicare I2CAceastă bibliotecă oferă o interfață simplă pentru controlul display-ului LCD, făcând mai ușor afișarea mesajelor text pe ecran. Această alegere este avantajoasă,​ deoarece simplifică procesul de gestionare a display-ului și reduce numărul de pini GPIO necesari. 
-<img + 
-    style="​display: none; width: 100%; transition: transform 0.3s ease; cursor: pointer; cursor: zoom-in;" +**Structuri de date**Am definit o structură, Level, pentru a reprezenta un nivel în joc, care încapsulează notele, ordinea butoanelor și numărul lorAceastă structură imi permite să reprezinț în mod convenabil diferite niveluri folosind aceeași structură de cod, crescând modularitatea și ușurând întreținerea codului
-    ​src="​https://ocw.cs.pub.ro/​courses/​_media/​pm/​prj2023/​avaduva/​sometimes_i_dream_about_cheese.png" + 
-    ​onclick="​if (this.style.transform === '​scale(1)'​) { this.style.transform = '​scale(1.2)'; this.style.cursor = '​zoom-out';​ this.style.boxShadow = '0 0 5px rgba(0000.5)'; } else if (this.style.transform === '​scale(1.2)') { this.style.transform = '​scale(1.4)'; } else { this.style.transform = '​scale(1)';​ this.style.cursor = 'zoom-in'; this.style.boxShadow = '​none';​ }" +**Tablouri și bucle**: Am folosit tablouri pentru a stoca informații precum ordinea butoanelor, notele, textul nivelului și sugestiile pentru fiecare nivelAceastă alegere de design facilitează iterarea prin aceste tablouri în timpul funcționării joculuiAcest lucru face ca codul să fie flexibil și ușor de extins pentru niveluri suplimentare. 
-/> + 
-</​html>​+**Funcții**:​ Am împărțit codul în diverse funcții, fiecare cu un scop specific, îmbunătățind citibilitatea și întreținerea coduluiDe exemplu, funcția handleButtonActions gestionează apăsările butoanelor, iar playNote este folosită pentru a reda tonuri pe buzzer. 
 + 
 +**Temporizare**:​ Am utilizat în mod extensiv funcția millis() pentru gestionarea sincronizării diferitelor evenimentecum ar fi afișarea mesajelor de timeoutcontrolul progresiei nivelului de jocgestionarea sunetelor buzzer-ului și menținerea timpului de apăsareAceastă abordare non-blocking permite Arduino-ului să efectueze alte sarcini în paralel, îmbunătățind astfel eficiența. 
 + 
 +**Integrare a senzorilor**:​ În cod, am integrat un senzor ultrasunete pentru unul dintre niveleAceastă alegere arată flexibilitatea designului de a incorpora diferite tipuri de intrăriAm utilizat datele de la senzor pentru a ajusta intervalul de bipuri al buzzer-ului,​ creând o reacție audio dinamică în funcție de interacțiunea jucătorului. 
 + 
 +**Gestionarea apăsării butoanelor**:​ Codul gestionează inteligent evenimentele de apăsare și eliberare a butoanelorAm inclus o logică de eliminare a zgomotelor și am utilizat modul INPUT_PULLUP pentru a asigura citiri precise ale apăsărilor butoanelorMai mult, codul poate gestiona apăsări simultane ale butoanelor, oferind un mecanism de interacțiune pentru utilizatorii confuzi. 
 + 
 +**Mecanisme de feedback**: Jocul oferă feedback prin intermediul display-ului LCD și al buzzer-uluiAceastă abordare multimodală îmbunătățește interacțiunea utilizatorului cu joculUtilizarea buzzer-ului pentru a furniza semnale audio și a display-ului pentru indicii vizuale contribuie la o experiență mai captivantă
 + 
 +**Randomness**:​ Pentru nivelul 3, este generată o frecvență aleatoare pentru a fi redată pe buzzer, demonstrând integrarea aleatorului în designul jocului.
  
 +==== Concluzii ====
 +Daca stiam ca in Arduino nu suporta lucrul cu un numar mare de String-uri, probabil faceam alt proiect.
 +In final, a fost o experienta distractiva,​ dar putin scumpa.
 +==== Bibliografie ====
 +https://​chat.openai.com/?​model=gpt-4
 +si laboratoarele de la PM, bineinteles.
pm/prj2023/avaduva/live_or_die.1685273488.txt.gz · Last modified: 2023/05/28 14:31 by alexandru.mazur
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