Adventure Game (text based) in C++Producer/Consumer implementation using condition_variableSimple multithreading C projectText-based adventure gameThe Mysts of Altair - text-based adventure gameText-based adventure survival horror gameFirst text-based adventure gameText based adventure game navigationText-based Adventure-Game EngineJava text-based adventure gameA little C++ based 2D game engine I madeShort text-based adventure gameText-based adventure and combat game

It's a yearly task, alright

Have researchers managed to "reverse time"? If so, what does that mean for physics?

Min function accepting varying number of arguments in C++17

How to use deus ex machina safely?

Bach's Toccata and Fugue in D minor breaks the "no parallel octaves" rule?

Could the Saturn V actually have launched astronauts around Venus?

How to terminate ping <dest> &

How do I hide Chekhov's Gun?

How to create the Curved texte?

Gantt Chart like rectangles with log scale

What is the significance behind "40 days" that often appears in the Bible?

Why doesn't using two cd commands in bash script execute the second command?

How to deal with taxi scam when on vacation?

Look at your watch and tell me what time is it. vs Look at your watch and tell me what time it is

A Cautionary Suggestion

Science-fiction short story where space navy wanted hospital ships and settlers had guns mounted everywhere

What exactly is this small puffer fish doing and how did it manage to accomplish such a feat?

Provisioning profile doesn't include the application-identifier and keychain-access-groups entitlements

How to write cleanly even if my character uses expletive language?

Can I use USB data pins as power source

How to deal with a cynical class?

Welcoming 2019 Pi day: How to draw the letter π?

Are ETF trackers fundamentally better than individual stocks?

Why is the President allowed to veto a cancellation of emergency powers?



Adventure Game (text based) in C++


Producer/Consumer implementation using condition_variableSimple multithreading C projectText-based adventure gameThe Mysts of Altair - text-based adventure gameText-based adventure survival horror gameFirst text-based adventure gameText based adventure game navigationText-based Adventure-Game EngineJava text-based adventure gameA little C++ based 2D game engine I madeShort text-based adventure gameText-based adventure and combat game













4












$begingroup$


I'm working on a simple text based adventure game. I've just finished working on the character creation portion. The code works perfectly fine when run, but I would just like to get some feedback to ensure that it checks off from a professional and efficient standpoint.



The values of the materials, weapons, and spells are representing the amount of damage points each does for further and future calculations with the characters stats later in the game.



The code itself essentially allows you to input a characters name. Then, the strength, stamina, and intellect is randomly generated so that your character build is different at the beginning of each game. Then, once that has finished, the code takes into account the weapon type, the material of the weapon, the spell type and adds additional damage based on the players stats.



I would just like to know if there is a better way of writing my code to make it look cleaner, or if there possibly any concerns that might cause me issues down the road when I add more functionality to the game. Seeing as I am a beginner to C++, I am not incredibly great at determining whether my code is optimal or not.



#include <iostream>
#include <string>
#include <ctime>

using namespace std;

/* Materials Structure */

typedef struct materials
int wood = 1, oak = 2, maple = 3, ash = 4, bronze = 2, iron = 3, steel = 4, mithril = 5, dragon = 6;
;

/* Weapon Structure */

typedef struct weapons
int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
weapons;

/* Spell Structure */

typedef struct spells
int fire = 4, frost = 6, dark = 8, chaos = 10;
spells;


/* Character Structure */

typedef struct character
string name;
int health = 100, mana = 100, strength, stamina, intellect, weaponAttack, spellAttack, souls = 0;
spells spell;
weapons weapon;
materials material;
character;

/* Function Declaration */

character characterCreation(string name);
void printInfo(character createChar);

/* Main Function */

int main()
string characterName;
cout << "Please input character name: ";
cin >> characterName;

srand(time(NULL));
character player = characterCreation(characterName);
printInfo(player);

system("pause");
return 0;


/* Function Definition */

character characterCreation(string name)
character createChar;
createChar.name = name;
createChar.strength = rand() % 5 + 5;
createChar.stamina = rand() % 5 + 5;
createChar.intellect = rand() % 5 + 5;
createChar.health += 2 * createChar.stamina;
createChar.mana += 3 * createChar.intellect;
createChar.weaponAttack = (createChar.weapon.dagger * createChar.material.bronze) + (2 * createChar.strength);
createChar.spellAttack = (createChar.spell.fire + (createChar.intellect * 2));
return createChar;


void printInfo(character createChar)
cout << createChar.name << endl;
cout << createChar.health << endl;
cout << createChar.mana << endl;
cout << createChar.strength << endl;
cout << createChar.stamina << endl;
cout << createChar.intellect << endl;
cout << createChar.weaponAttack << endl;
cout << createChar.spellAttack << endl;
cout << createChar.souls << endl;










share|improve this question









New contributor




Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$
















    4












    $begingroup$


    I'm working on a simple text based adventure game. I've just finished working on the character creation portion. The code works perfectly fine when run, but I would just like to get some feedback to ensure that it checks off from a professional and efficient standpoint.



    The values of the materials, weapons, and spells are representing the amount of damage points each does for further and future calculations with the characters stats later in the game.



    The code itself essentially allows you to input a characters name. Then, the strength, stamina, and intellect is randomly generated so that your character build is different at the beginning of each game. Then, once that has finished, the code takes into account the weapon type, the material of the weapon, the spell type and adds additional damage based on the players stats.



    I would just like to know if there is a better way of writing my code to make it look cleaner, or if there possibly any concerns that might cause me issues down the road when I add more functionality to the game. Seeing as I am a beginner to C++, I am not incredibly great at determining whether my code is optimal or not.



    #include <iostream>
    #include <string>
    #include <ctime>

    using namespace std;

    /* Materials Structure */

    typedef struct materials
    int wood = 1, oak = 2, maple = 3, ash = 4, bronze = 2, iron = 3, steel = 4, mithril = 5, dragon = 6;
    ;

    /* Weapon Structure */

    typedef struct weapons
    int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
    weapons;

    /* Spell Structure */

    typedef struct spells
    int fire = 4, frost = 6, dark = 8, chaos = 10;
    spells;


    /* Character Structure */

    typedef struct character
    string name;
    int health = 100, mana = 100, strength, stamina, intellect, weaponAttack, spellAttack, souls = 0;
    spells spell;
    weapons weapon;
    materials material;
    character;

    /* Function Declaration */

    character characterCreation(string name);
    void printInfo(character createChar);

    /* Main Function */

    int main()
    string characterName;
    cout << "Please input character name: ";
    cin >> characterName;

    srand(time(NULL));
    character player = characterCreation(characterName);
    printInfo(player);

    system("pause");
    return 0;


    /* Function Definition */

    character characterCreation(string name)
    character createChar;
    createChar.name = name;
    createChar.strength = rand() % 5 + 5;
    createChar.stamina = rand() % 5 + 5;
    createChar.intellect = rand() % 5 + 5;
    createChar.health += 2 * createChar.stamina;
    createChar.mana += 3 * createChar.intellect;
    createChar.weaponAttack = (createChar.weapon.dagger * createChar.material.bronze) + (2 * createChar.strength);
    createChar.spellAttack = (createChar.spell.fire + (createChar.intellect * 2));
    return createChar;


    void printInfo(character createChar)
    cout << createChar.name << endl;
    cout << createChar.health << endl;
    cout << createChar.mana << endl;
    cout << createChar.strength << endl;
    cout << createChar.stamina << endl;
    cout << createChar.intellect << endl;
    cout << createChar.weaponAttack << endl;
    cout << createChar.spellAttack << endl;
    cout << createChar.souls << endl;










    share|improve this question









    New contributor




    Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$














      4












      4








      4





      $begingroup$


      I'm working on a simple text based adventure game. I've just finished working on the character creation portion. The code works perfectly fine when run, but I would just like to get some feedback to ensure that it checks off from a professional and efficient standpoint.



      The values of the materials, weapons, and spells are representing the amount of damage points each does for further and future calculations with the characters stats later in the game.



      The code itself essentially allows you to input a characters name. Then, the strength, stamina, and intellect is randomly generated so that your character build is different at the beginning of each game. Then, once that has finished, the code takes into account the weapon type, the material of the weapon, the spell type and adds additional damage based on the players stats.



      I would just like to know if there is a better way of writing my code to make it look cleaner, or if there possibly any concerns that might cause me issues down the road when I add more functionality to the game. Seeing as I am a beginner to C++, I am not incredibly great at determining whether my code is optimal or not.



      #include <iostream>
      #include <string>
      #include <ctime>

      using namespace std;

      /* Materials Structure */

      typedef struct materials
      int wood = 1, oak = 2, maple = 3, ash = 4, bronze = 2, iron = 3, steel = 4, mithril = 5, dragon = 6;
      ;

      /* Weapon Structure */

      typedef struct weapons
      int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
      weapons;

      /* Spell Structure */

      typedef struct spells
      int fire = 4, frost = 6, dark = 8, chaos = 10;
      spells;


      /* Character Structure */

      typedef struct character
      string name;
      int health = 100, mana = 100, strength, stamina, intellect, weaponAttack, spellAttack, souls = 0;
      spells spell;
      weapons weapon;
      materials material;
      character;

      /* Function Declaration */

      character characterCreation(string name);
      void printInfo(character createChar);

      /* Main Function */

      int main()
      string characterName;
      cout << "Please input character name: ";
      cin >> characterName;

      srand(time(NULL));
      character player = characterCreation(characterName);
      printInfo(player);

      system("pause");
      return 0;


      /* Function Definition */

      character characterCreation(string name)
      character createChar;
      createChar.name = name;
      createChar.strength = rand() % 5 + 5;
      createChar.stamina = rand() % 5 + 5;
      createChar.intellect = rand() % 5 + 5;
      createChar.health += 2 * createChar.stamina;
      createChar.mana += 3 * createChar.intellect;
      createChar.weaponAttack = (createChar.weapon.dagger * createChar.material.bronze) + (2 * createChar.strength);
      createChar.spellAttack = (createChar.spell.fire + (createChar.intellect * 2));
      return createChar;


      void printInfo(character createChar)
      cout << createChar.name << endl;
      cout << createChar.health << endl;
      cout << createChar.mana << endl;
      cout << createChar.strength << endl;
      cout << createChar.stamina << endl;
      cout << createChar.intellect << endl;
      cout << createChar.weaponAttack << endl;
      cout << createChar.spellAttack << endl;
      cout << createChar.souls << endl;










      share|improve this question









      New contributor




      Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      I'm working on a simple text based adventure game. I've just finished working on the character creation portion. The code works perfectly fine when run, but I would just like to get some feedback to ensure that it checks off from a professional and efficient standpoint.



      The values of the materials, weapons, and spells are representing the amount of damage points each does for further and future calculations with the characters stats later in the game.



      The code itself essentially allows you to input a characters name. Then, the strength, stamina, and intellect is randomly generated so that your character build is different at the beginning of each game. Then, once that has finished, the code takes into account the weapon type, the material of the weapon, the spell type and adds additional damage based on the players stats.



      I would just like to know if there is a better way of writing my code to make it look cleaner, or if there possibly any concerns that might cause me issues down the road when I add more functionality to the game. Seeing as I am a beginner to C++, I am not incredibly great at determining whether my code is optimal or not.



      #include <iostream>
      #include <string>
      #include <ctime>

      using namespace std;

      /* Materials Structure */

      typedef struct materials
      int wood = 1, oak = 2, maple = 3, ash = 4, bronze = 2, iron = 3, steel = 4, mithril = 5, dragon = 6;
      ;

      /* Weapon Structure */

      typedef struct weapons
      int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
      weapons;

      /* Spell Structure */

      typedef struct spells
      int fire = 4, frost = 6, dark = 8, chaos = 10;
      spells;


      /* Character Structure */

      typedef struct character
      string name;
      int health = 100, mana = 100, strength, stamina, intellect, weaponAttack, spellAttack, souls = 0;
      spells spell;
      weapons weapon;
      materials material;
      character;

      /* Function Declaration */

      character characterCreation(string name);
      void printInfo(character createChar);

      /* Main Function */

      int main()
      string characterName;
      cout << "Please input character name: ";
      cin >> characterName;

      srand(time(NULL));
      character player = characterCreation(characterName);
      printInfo(player);

      system("pause");
      return 0;


      /* Function Definition */

      character characterCreation(string name)
      character createChar;
      createChar.name = name;
      createChar.strength = rand() % 5 + 5;
      createChar.stamina = rand() % 5 + 5;
      createChar.intellect = rand() % 5 + 5;
      createChar.health += 2 * createChar.stamina;
      createChar.mana += 3 * createChar.intellect;
      createChar.weaponAttack = (createChar.weapon.dagger * createChar.material.bronze) + (2 * createChar.strength);
      createChar.spellAttack = (createChar.spell.fire + (createChar.intellect * 2));
      return createChar;


      void printInfo(character createChar)
      cout << createChar.name << endl;
      cout << createChar.health << endl;
      cout << createChar.mana << endl;
      cout << createChar.strength << endl;
      cout << createChar.stamina << endl;
      cout << createChar.intellect << endl;
      cout << createChar.weaponAttack << endl;
      cout << createChar.spellAttack << endl;
      cout << createChar.souls << endl;







      c++ beginner game adventure-game






      share|improve this question









      New contributor




      Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 1 hour ago







      Justin













      New contributor




      Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 4 hours ago









      JustinJustin

      212




      212




      New contributor




      Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Justin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          1 Answer
          1






          active

          oldest

          votes


















          2












          $begingroup$

          It's extremely unclear what you're asking (or whether your post might just be a troll post), so expect it to get closed shortly.




          typedef struct weapons 
          int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
          weapons;


          The typedef struct X ... X; pattern is a C-ism; in C++ you don't need the typedef and can just write struct X ... ;.



          You're creating a struct type named weapons with a bunch of per-instance member variables. This is almost certainly not what you meant to do. Probably what you meant was



          enum class Weapon 
          dagger = 2,
          sword = 3,
          axe = 4,
          mace = 5,
          ;


          so that you could later write



          Weapon w = Weapon::sword;
          if (w == Weapon::axe) ...


          What you actually wrote, unfortunately, is simply nonsense.




          character characterCreation(string name);


          Look up the C++ notion of "constructors" (and also destructors). What you have here would normally be spelled something like



          Character::Character(const std::string& name) 
          this->name = name;
          this->strength = rand() % 5 + 5;



          and so on.



          Also consider writing yourself a helper function



          int randint(int lo, int hi) 
          return rand() % (hi - lo) + lo;



          so that you can write simply



           this->strength = randint(5, 10);


          Ninety percent of what we call "programming" is just finding sources of repetition and eliminating them.






          share|improve this answer









          $endgroup$












          • $begingroup$
            I apologize, I should have clarified what my code is doing and what my expectations were. My post is not a troll, I prefer not to waste peoples time if I do not have to. I will make edits to the question. The numbers on the materials, weapons, and spells simply represent the amount of damage.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            Thank you for the insight and helpful post though. I will take a look at more constructors and destructors. I used the struct with the hopes that I would be able to create a large combination of different weapon types/spells, being that my class has only just begun using structs I am not too familiar with constructors/destructors.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            randint(5,10), as written, only generates 5 to 9, inclusive. You’d want hi - lo + 1 to get the full range.
            $endgroup$
            – AJNeufeld
            1 hour ago










          • $begingroup$
            @AJNeufeld: Half-open ranges are the building blocks of C++ (as well as most other programming languages), and the sooner OP gets familiar with them, the better. See here and here for places I've used the phrase "half-open range" in previous reviews.
            $endgroup$
            – Quuxplusone
            59 mins ago










          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          Justin is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215542%2fadventure-game-text-based-in-c%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2












          $begingroup$

          It's extremely unclear what you're asking (or whether your post might just be a troll post), so expect it to get closed shortly.




          typedef struct weapons 
          int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
          weapons;


          The typedef struct X ... X; pattern is a C-ism; in C++ you don't need the typedef and can just write struct X ... ;.



          You're creating a struct type named weapons with a bunch of per-instance member variables. This is almost certainly not what you meant to do. Probably what you meant was



          enum class Weapon 
          dagger = 2,
          sword = 3,
          axe = 4,
          mace = 5,
          ;


          so that you could later write



          Weapon w = Weapon::sword;
          if (w == Weapon::axe) ...


          What you actually wrote, unfortunately, is simply nonsense.




          character characterCreation(string name);


          Look up the C++ notion of "constructors" (and also destructors). What you have here would normally be spelled something like



          Character::Character(const std::string& name) 
          this->name = name;
          this->strength = rand() % 5 + 5;



          and so on.



          Also consider writing yourself a helper function



          int randint(int lo, int hi) 
          return rand() % (hi - lo) + lo;



          so that you can write simply



           this->strength = randint(5, 10);


          Ninety percent of what we call "programming" is just finding sources of repetition and eliminating them.






          share|improve this answer









          $endgroup$












          • $begingroup$
            I apologize, I should have clarified what my code is doing and what my expectations were. My post is not a troll, I prefer not to waste peoples time if I do not have to. I will make edits to the question. The numbers on the materials, weapons, and spells simply represent the amount of damage.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            Thank you for the insight and helpful post though. I will take a look at more constructors and destructors. I used the struct with the hopes that I would be able to create a large combination of different weapon types/spells, being that my class has only just begun using structs I am not too familiar with constructors/destructors.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            randint(5,10), as written, only generates 5 to 9, inclusive. You’d want hi - lo + 1 to get the full range.
            $endgroup$
            – AJNeufeld
            1 hour ago










          • $begingroup$
            @AJNeufeld: Half-open ranges are the building blocks of C++ (as well as most other programming languages), and the sooner OP gets familiar with them, the better. See here and here for places I've used the phrase "half-open range" in previous reviews.
            $endgroup$
            – Quuxplusone
            59 mins ago















          2












          $begingroup$

          It's extremely unclear what you're asking (or whether your post might just be a troll post), so expect it to get closed shortly.




          typedef struct weapons 
          int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
          weapons;


          The typedef struct X ... X; pattern is a C-ism; in C++ you don't need the typedef and can just write struct X ... ;.



          You're creating a struct type named weapons with a bunch of per-instance member variables. This is almost certainly not what you meant to do. Probably what you meant was



          enum class Weapon 
          dagger = 2,
          sword = 3,
          axe = 4,
          mace = 5,
          ;


          so that you could later write



          Weapon w = Weapon::sword;
          if (w == Weapon::axe) ...


          What you actually wrote, unfortunately, is simply nonsense.




          character characterCreation(string name);


          Look up the C++ notion of "constructors" (and also destructors). What you have here would normally be spelled something like



          Character::Character(const std::string& name) 
          this->name = name;
          this->strength = rand() % 5 + 5;



          and so on.



          Also consider writing yourself a helper function



          int randint(int lo, int hi) 
          return rand() % (hi - lo) + lo;



          so that you can write simply



           this->strength = randint(5, 10);


          Ninety percent of what we call "programming" is just finding sources of repetition and eliminating them.






          share|improve this answer









          $endgroup$












          • $begingroup$
            I apologize, I should have clarified what my code is doing and what my expectations were. My post is not a troll, I prefer not to waste peoples time if I do not have to. I will make edits to the question. The numbers on the materials, weapons, and spells simply represent the amount of damage.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            Thank you for the insight and helpful post though. I will take a look at more constructors and destructors. I used the struct with the hopes that I would be able to create a large combination of different weapon types/spells, being that my class has only just begun using structs I am not too familiar with constructors/destructors.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            randint(5,10), as written, only generates 5 to 9, inclusive. You’d want hi - lo + 1 to get the full range.
            $endgroup$
            – AJNeufeld
            1 hour ago










          • $begingroup$
            @AJNeufeld: Half-open ranges are the building blocks of C++ (as well as most other programming languages), and the sooner OP gets familiar with them, the better. See here and here for places I've used the phrase "half-open range" in previous reviews.
            $endgroup$
            – Quuxplusone
            59 mins ago













          2












          2








          2





          $begingroup$

          It's extremely unclear what you're asking (or whether your post might just be a troll post), so expect it to get closed shortly.




          typedef struct weapons 
          int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
          weapons;


          The typedef struct X ... X; pattern is a C-ism; in C++ you don't need the typedef and can just write struct X ... ;.



          You're creating a struct type named weapons with a bunch of per-instance member variables. This is almost certainly not what you meant to do. Probably what you meant was



          enum class Weapon 
          dagger = 2,
          sword = 3,
          axe = 4,
          mace = 5,
          ;


          so that you could later write



          Weapon w = Weapon::sword;
          if (w == Weapon::axe) ...


          What you actually wrote, unfortunately, is simply nonsense.




          character characterCreation(string name);


          Look up the C++ notion of "constructors" (and also destructors). What you have here would normally be spelled something like



          Character::Character(const std::string& name) 
          this->name = name;
          this->strength = rand() % 5 + 5;



          and so on.



          Also consider writing yourself a helper function



          int randint(int lo, int hi) 
          return rand() % (hi - lo) + lo;



          so that you can write simply



           this->strength = randint(5, 10);


          Ninety percent of what we call "programming" is just finding sources of repetition and eliminating them.






          share|improve this answer









          $endgroup$



          It's extremely unclear what you're asking (or whether your post might just be a troll post), so expect it to get closed shortly.




          typedef struct weapons 
          int dagger = 2, sword = 3, axe = 4, mace = 5, bow = 3, arrows = 2;
          weapons;


          The typedef struct X ... X; pattern is a C-ism; in C++ you don't need the typedef and can just write struct X ... ;.



          You're creating a struct type named weapons with a bunch of per-instance member variables. This is almost certainly not what you meant to do. Probably what you meant was



          enum class Weapon 
          dagger = 2,
          sword = 3,
          axe = 4,
          mace = 5,
          ;


          so that you could later write



          Weapon w = Weapon::sword;
          if (w == Weapon::axe) ...


          What you actually wrote, unfortunately, is simply nonsense.




          character characterCreation(string name);


          Look up the C++ notion of "constructors" (and also destructors). What you have here would normally be spelled something like



          Character::Character(const std::string& name) 
          this->name = name;
          this->strength = rand() % 5 + 5;



          and so on.



          Also consider writing yourself a helper function



          int randint(int lo, int hi) 
          return rand() % (hi - lo) + lo;



          so that you can write simply



           this->strength = randint(5, 10);


          Ninety percent of what we call "programming" is just finding sources of repetition and eliminating them.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 4 hours ago









          QuuxplusoneQuuxplusone

          12.5k12061




          12.5k12061











          • $begingroup$
            I apologize, I should have clarified what my code is doing and what my expectations were. My post is not a troll, I prefer not to waste peoples time if I do not have to. I will make edits to the question. The numbers on the materials, weapons, and spells simply represent the amount of damage.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            Thank you for the insight and helpful post though. I will take a look at more constructors and destructors. I used the struct with the hopes that I would be able to create a large combination of different weapon types/spells, being that my class has only just begun using structs I am not too familiar with constructors/destructors.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            randint(5,10), as written, only generates 5 to 9, inclusive. You’d want hi - lo + 1 to get the full range.
            $endgroup$
            – AJNeufeld
            1 hour ago










          • $begingroup$
            @AJNeufeld: Half-open ranges are the building blocks of C++ (as well as most other programming languages), and the sooner OP gets familiar with them, the better. See here and here for places I've used the phrase "half-open range" in previous reviews.
            $endgroup$
            – Quuxplusone
            59 mins ago
















          • $begingroup$
            I apologize, I should have clarified what my code is doing and what my expectations were. My post is not a troll, I prefer not to waste peoples time if I do not have to. I will make edits to the question. The numbers on the materials, weapons, and spells simply represent the amount of damage.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            Thank you for the insight and helpful post though. I will take a look at more constructors and destructors. I used the struct with the hopes that I would be able to create a large combination of different weapon types/spells, being that my class has only just begun using structs I am not too familiar with constructors/destructors.
            $endgroup$
            – Justin
            2 hours ago











          • $begingroup$
            randint(5,10), as written, only generates 5 to 9, inclusive. You’d want hi - lo + 1 to get the full range.
            $endgroup$
            – AJNeufeld
            1 hour ago










          • $begingroup$
            @AJNeufeld: Half-open ranges are the building blocks of C++ (as well as most other programming languages), and the sooner OP gets familiar with them, the better. See here and here for places I've used the phrase "half-open range" in previous reviews.
            $endgroup$
            – Quuxplusone
            59 mins ago















          $begingroup$
          I apologize, I should have clarified what my code is doing and what my expectations were. My post is not a troll, I prefer not to waste peoples time if I do not have to. I will make edits to the question. The numbers on the materials, weapons, and spells simply represent the amount of damage.
          $endgroup$
          – Justin
          2 hours ago





          $begingroup$
          I apologize, I should have clarified what my code is doing and what my expectations were. My post is not a troll, I prefer not to waste peoples time if I do not have to. I will make edits to the question. The numbers on the materials, weapons, and spells simply represent the amount of damage.
          $endgroup$
          – Justin
          2 hours ago













          $begingroup$
          Thank you for the insight and helpful post though. I will take a look at more constructors and destructors. I used the struct with the hopes that I would be able to create a large combination of different weapon types/spells, being that my class has only just begun using structs I am not too familiar with constructors/destructors.
          $endgroup$
          – Justin
          2 hours ago





          $begingroup$
          Thank you for the insight and helpful post though. I will take a look at more constructors and destructors. I used the struct with the hopes that I would be able to create a large combination of different weapon types/spells, being that my class has only just begun using structs I am not too familiar with constructors/destructors.
          $endgroup$
          – Justin
          2 hours ago













          $begingroup$
          randint(5,10), as written, only generates 5 to 9, inclusive. You’d want hi - lo + 1 to get the full range.
          $endgroup$
          – AJNeufeld
          1 hour ago




          $begingroup$
          randint(5,10), as written, only generates 5 to 9, inclusive. You’d want hi - lo + 1 to get the full range.
          $endgroup$
          – AJNeufeld
          1 hour ago












          $begingroup$
          @AJNeufeld: Half-open ranges are the building blocks of C++ (as well as most other programming languages), and the sooner OP gets familiar with them, the better. See here and here for places I've used the phrase "half-open range" in previous reviews.
          $endgroup$
          – Quuxplusone
          59 mins ago




          $begingroup$
          @AJNeufeld: Half-open ranges are the building blocks of C++ (as well as most other programming languages), and the sooner OP gets familiar with them, the better. See here and here for places I've used the phrase "half-open range" in previous reviews.
          $endgroup$
          – Quuxplusone
          59 mins ago










          Justin is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          Justin is a new contributor. Be nice, and check out our Code of Conduct.












          Justin is a new contributor. Be nice, and check out our Code of Conduct.











          Justin is a new contributor. Be nice, and check out our Code of Conduct.














          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215542%2fadventure-game-text-based-in-c%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Magento 2 duplicate PHPSESSID cookie when using session_start() in custom php scriptMagento 2: User cant logged in into to account page, no error showing!Magento duplicate on subdomainGrabbing storeview from cookie (after using language selector)How do I run php custom script on magento2Magento 2: Include PHP script in headerSession lock after using Cm_RedisSessionscript php to update stockMagento set cookie popupMagento 2 session id cookie - where to find it?How to import Configurable product from csv with custom attributes using php scriptMagento 2 run custom PHP script

          Can not update quote_id field of “quote_item” table magento 2Magento 2.1 - We can't remove the item. (Shopping Cart doesnt allow us to remove items before becomes empty)Add value for custom quote item attribute using REST apiREST API endpoint v1/carts/cartId/items always returns error messageCorrect way to save entries to databaseHow to remove all associated quote objects of a customer completelyMagento 2 - Save value from custom input field to quote_itemGet quote_item data using quote id and product id filter in Magento 2How to set additional data to quote_item table from controller in Magento 2?What is the purpose of additional_data column in quote_item table in magento2Set Custom Price to Quote item magento2 from controller

          How to solve knockout JS error in Magento 2 Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?(Magento2) knockout.js:3012 Uncaught ReferenceError: Unable to process bindingUnable to process binding Knockout.js magento 2Cannot read property `scopeLabel` of undefined on Product Detail PageCan't get Customer Data on frontend in Magento 2Magento2 Order Summary - unable to process bindingKO templates are not loading in Magento 2.1 applicationgetting knockout js error magento 2Product grid not load -— Unable to process binding Knockout.js magento 2Product form not loaded in magento2Uncaught ReferenceError: Unable to process binding “if: function()return (isShowLegend()) ” magento 2