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/03 23:45]
alexandru.rait [Concluzii]
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 =====
-Tutorial LCD + Bibliotecă:+**IDE folosite:** Arduino pentru compilare și trimitere; VSC pentru editare surse
  
-https://​learn.sparkfun.com/​tutorials/​graphic-lcd-hookup-guide+**Tutorial LCD + Biblioteca LCD_Functions.h:​** 
 +  * https://​learn.sparkfun.com/​tutorials/​graphic-lcd-hookup-guide 
 + 
 +**Fișiere cu cod:** 
 +  * Text-Based_RPG.ino - fișierul de bază, afișează logo și pornește update-urile 
 +  * Text-Based_RPG.h - apelează funcții ale claselor UI 
 +  * UIAbstract.h - UI de bază 
 +  * NSText.h - un namespace care conține un UI cu text 
 +  * NSInfo.h - un namespace care conține un UI cu informații despre caracter 
 +  * NSActions.h - un namespace care conține un UI cu meniu cu acțiuni 
 +  * NSLockpicking.h - un namespace care conține un UI cu mini-game-ul de lockpicking 
 +  * ActionManager.h - definește acțiunile și encounter-urile 
 +  * GameUnit.h - clasa unitate, care are health și mana, și funcții pentru modificarea lor 
 +  * 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 
 +  * 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 
 +  * definitions.h - are define-uri pentru pini, inputuri, acțiuni și alte constante 
 +  * LCD_Manager.h - funcții pentru modificarea și afișarea unui buffer cu text pe ecran 
 +  * LCD_Functions.h - biblioteca precizată mai sus, la care am adus mici modificări 
 + 
 +**Funcționalități** 
 +  * Afișează un logo la început. 
 +  * 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. 
 +  * 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) 
 +  * 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ă. 
 +  * 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 39: 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:
 +
 1) #define în loc de const 1) #define în loc de const
 +
 2) bufferii globali sunt reutilizați 2) bufferii globali sunt reutilizați
 +
 3) variabilele sunt definite în blocuri 3) variabilele sunt definite în blocuri
 +
 4) byte (unsigned char) și unsigned short în loc de int 4) byte (unsigned char) și unsigned short în loc de int
 +
 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.1622753119.txt.gz · Last modified: 2021/06/03 23:45 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