Differences

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

Link to this comparison view

pm:prj2021:dbrigalda:text-based_rpg [2021/06/04 00:09]
alexandru.rait
pm:prj2021:dbrigalda:text-based_rpg [2021/06/04 09:05] (current)
alexandru.rait [Software Design]
Line 25: Line 25:
   * Butoane   * Butoane
   * Rezistențe   * Rezistențe
-  * Fire+  * Fire{{ :​pm:​prj2021:​dbrigalda:​schematbrpg.png?​900 |}}
 ===== Software Design ===== ===== Software Design =====
 **IDE folosite:** Arduino pentru compilare și trimitere; VSC pentru editare surse **IDE folosite:** Arduino pentru compilare și trimitere; VSC pentru editare surse
Line 44: Line 44:
   * GamePlayer.h - clasa jucător, o unitate care mai are gold și lockpicks   * GamePlayer.h - clasa jucător, o unitate care mai are gold și lockpicks
   * GameAction.h - clasa unei acțiuni care apare în meniu, având o funcție de afișare și un id corespunzător   * GameAction.h - clasa unei acțiuni care apare în meniu, având o funcție de afișare și un id corespunzător
 +  * sound_functions.h - definește mai multe funcții pentru sunete diverse
   * game_data.h - definește clasa Cost și ține instanța jucătorului   * game_data.h - definește clasa Cost și ține instanța jucătorului
   * definitions.h - are define-uri pentru pini, inputuri, acțiuni și alte constante   * definitions.h - are define-uri pentru pini, inputuri, acțiuni și alte constante
Line 50: Line 51:
  
 **Funcționalități** **Funcționalități**
- * Afișează un logo la început. +  ​* Afișează un logo la început. 
- * Are 3 meniuri selectabile prin Joystick pe axa x, în mod ciclic (Aventură, Acțiuni, Caracter). +  * Are 3 meniuri selectabile prin Joystick pe axa x, în mod ciclic (Aventură, Acțiuni, Caracter). 
- * În cadrul meniului aventură apar întâmplări aleatoare, care modifică statisticile jucătorului. +  * În cadrul meniului aventură apar întâmplări aleatoare, care modifică statisticile jucătorului. 
- * O întâmplare poate fi mini-game-ul de lockpicking. +  * O întâmplare poate fi mini-game-ul de lockpicking. 
- * În cadrul meniului acțiuni, jucătorul poate să continue aventura, să se vindece (costă mana) sau să cumpere un lockpick (costă gold) +  * În cadrul meniului acțiuni, jucătorul poate să continue aventura, să se vindece (costă mana) sau să cumpere un lockpick (costă gold) 
- * Prețurile acțiunilor sunt notate după semnul dolar '​$'​ cu H (dacă ar exista acțiuni care costă health), M (pentru mana), G (pentru gold) sau combinații (dacă ar exista acțiuni care ar costa mai mult de o resursă). +  * Prețurile acțiunilor sunt notate după semnul dolar '​$'​ cu H (dacă ar exista acțiuni care ar cost health), M (pentru mana), G (pentru gold) sau combinații (dacă ar exista acțiuni care ar costa mai mult de o resursă). 
- * Joystick-ul poate fi mutat pe axa y pentru a se face scroll la text sau pentru a selecta acțiunea dorită. +  * Joystick-ul poate fi mutat pe axa y pentru a se face scroll la text sau pentru a selecta acțiunea dorită. 
- * Butonul este folosit pentru a continua aventura, a alege o acțiune sau pentru a încerca lacătul la lockpicking. +  * Butonul este folosit pentru a continua aventura, a alege o acțiune sau pentru a încerca lacătul la lockpicking. 
- ​* ​+  Potențiometrul este folosit pentru a selecta căsuța în mini-game-ul de lockpicking (are valori digitalizate 0-33). 
 +  * Buzzer-ul pasiv este folosit pentru efecte sonore (bun, rău, mai bun, succes și incremental). 
 +  * Sunetul incremental (soundRange) este folosit pentru a îl ghida pe jucător către poziția corectă la lockpicking. Cu cât sunetul este mai puternic, cu atât el este mai aproape de poziția corectă. 
 +  * LED-urile RGB sunt folosite pentru a arăta sănătatea și mana jucătorului,​ având culorile precizate mai sus. 
 +  * LED-urile se sting în meniuri în care ele nu au rost. De exemplu în mini-game-ul de lockpicking,​ unde sănătatea și mana nu contează. 
 +  * PIN-ul analog A4 este folosit ca seed pentru random. 
 +  * Cheat-uri prin litere pe serială: '​l'​ pentru a arăta poziția corectă la lockpicking,​ '​u'​ pentru a incrementa sănătatea și mana, '​d'​ pentru a decrementa sănătatea și mana.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 Legarea plăcii cu ecranul: Legarea plăcii cu ecranul:
Line 68: Line 75:
 {{ :​pm:​prj2021:​dbrigalda:​ttrpg2.jpg?​400 |}} {{ :​pm:​prj2021:​dbrigalda:​ttrpg2.jpg?​400 |}}
 {{ :​pm:​prj2021:​dbrigalda:​ttrpg3.jpg?​400 |}} {{ :​pm:​prj2021:​dbrigalda:​ttrpg3.jpg?​400 |}}
 +[[https://​www.youtube.com/​watch?​v=2fCfSKYeLCg|{{ :​pm:​prj2021:​dbrigalda:​tbrpg-cover.png?​800 |}}]]
 ===== Concluzii ===== ===== Concluzii =====
 Lucrând la acest proiect am realizat că trebuie să am foarte mare grijă la memorie. Au apărut foarte multe bug-uri în timpul implementări,​ cum ar fi pagini care nu apăreau în totalitate sau restartări ale plăcii. Foarte multe s-au datorat umplerii memoriei. Pentru a maximiza funcționalitățile și a minimaliza memoria utilizată am lucrat după următoarele reguli: Lucrând la acest proiect am realizat că trebuie să am foarte mare grijă la memorie. Au apărut foarte multe bug-uri în timpul implementări,​ cum ar fi pagini care nu apăreau în totalitate sau restartări ale plăcii. Foarte multe s-au datorat umplerii memoriei. Pentru a maximiza funcționalitățile și a minimaliza memoria utilizată am lucrat după următoarele reguli:
Line 81: Line 89:
 5) variabilele globale și câmpurile din clasele globale folosite rar pot fi înlocuite cu funcții care le recalculează pentru a nu ocupa memorie când nu sunt utilizate (de exemplu am înlocuit UI::​usesLeds cu UI::​UsesLeds(),​ care întoarce true sau false în loc să rețină valoarea) 5) variabilele globale și câmpurile din clasele globale folosite rar pot fi înlocuite cu funcții care le recalculează pentru a nu ocupa memorie când nu sunt utilizate (de exemplu am înlocuit UI::​usesLeds cu UI::​UsesLeds(),​ care întoarce true sau false în loc să rețină valoarea)
 ===== Download ===== ===== Download =====
-<​note>​ +**Arhivă cu sursele:** 
-TODO +{{:​pm:​prj2021:​dbrigalda:​text-based_rpg.zip|}}
-</​note>​+
 ===== Jurnal ===== ===== Jurnal =====
 https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​dbrigalda/​text-based_rpg?​do=revisions https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​dbrigalda/​text-based_rpg?​do=revisions
pm/prj2021/dbrigalda/text-based_rpg.1622754555.txt.gz · Last modified: 2021/06/04 00:09 by alexandru.rait
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