Advertisement
Guest User

hi

a guest
Jul 26th, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <ctime>
  4. #include <fstream>
  5. #include <vector>
  6. #define ATTACK 1
  7. #define HEALTH 2
  8.  
  9. class Character
  10. {
  11.     private:
  12.         std::string name;
  13.         unsigned int health, attack, wins, maxHealth;
  14.         std::vector<std::string> weaponList;
  15.         std::vector<std::string>::iterator _it;
  16.     public:
  17.         Character(const std::string n, const int h, const int a):health(h), attack(a), name(n) {
  18.             wins = 0;
  19.             maxHealth = health;
  20.         }
  21.         std::string getName(void) const { return name;               }
  22.         int getHealth      (void) const { return health;             }
  23.         int getAttack      (void) const { return attack;             }
  24.         int getMaxHealth   (void) const { return maxHealth;          }
  25.         int getWins        (void) const { return wins;               }
  26.         void win           (void)       { wins++;                    }
  27.         void takeDmg       (const int dmg) { health-=dmg;            }
  28.         void heal          (void)          {
  29.             health = maxHealth;
  30.             wins-=3;
  31.         }
  32.         void attackPlayer(Character *b)
  33.         {
  34.             b->takeDmg((rand() % this->getAttack())+1);
  35.         }
  36.         void attachWeapon(const std::string n,  const int add, const int cost, const int tp)
  37.         {
  38.             if(tp == 1)      attack+=add;
  39.             else if(tp == 2) maxHealth+=add;
  40.             if(wins >= cost)
  41.                 wins-=cost;
  42.             weaponList.push_back(n);
  43.         }
  44.         void printInv(const char manipulator)
  45.         {
  46.             for(_it = weaponList.begin(); _it != weaponList.end(); ++_it) {
  47.                 std::cout << *_it << manipulator;
  48.             }
  49.         }
  50.         void saveCharacter(void)
  51.         {
  52.             std::ofstream writeFile("hero.txt");
  53.             if(!writeFile.good())
  54.                 std::cerr << "\tError: Could not write to file." << std::endl;
  55.             writeFile << health << "\n" << attack << "\n" << wins << "\n" << maxHealth << "\n" << name;
  56.             std::clog << "\tFile save successful." << std::endl;
  57.             writeFile.close();
  58.             std::cin.get();
  59.             std::cin.get();
  60.         }
  61.         void loadCharacter(const std::string fileName)
  62.         {
  63.             std::ifstream readFile(fileName.c_str());
  64.             if(!readFile.good())
  65.                 std::cerr << "Error: Could not read file. " << std::endl;
  66.             std::string buffer;
  67.             while(getline(readFile, buffer, '\n')) {
  68.                
  69.             }
  70.             readFile.close();
  71.         }
  72. };
  73.  
  74. void visitShop(Character *hero);
  75. void visitArena(Character *hero);
  76.  
  77. bool gameRun = false; // i hate myself for this
  78.  
  79. int main(void)
  80. {
  81.     int ch;
  82.     if(gameRun == false) {
  83.         std::cout << "\n\n\n" << std::endl;
  84.         std::cout << "\t ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ \t ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" << std::endl;
  85.         std::cout << "\t ³     (1)  Gandorf       ³ \t ³       (2)  Ashe        ³" << std::endl;
  86.         std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij \t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij" << std::endl;
  87.         std::cout << "\t ³                        ³ \t ³                        ³" << std::endl;
  88.         std::cout << "\t ³  ³ Attack:  40pts      ³ \t ³  ³ Attack:  20pts      ³" << std::endl;
  89.         std::cout << "\t ³  ³ Defence: 10pts      ³ \t ³  ³ Defence: 15pts      ³" << std::endl;
  90.         std::cout << "\t ³  ³ Weapon:  BattleAxe  ³ \t ³  ³ Weapon:  Bow        ³" << std::endl;
  91.         std::cout << "\t ³                        ³ \t ³                        ³" << std::endl;
  92.         std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij \t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij" << std::endl;
  93.         std::cout << "\t ³  ³ Base: Melee         ³ \t ³  ³ Base: Ranged        ³" << std::endl;
  94.         std::cout << "\t ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ \t ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" << std::endl;
  95.         std::cout << "\t  Warrior Choice: ";
  96.         std::cin >> ch;
  97.         gameRun = true;
  98.     }
  99.     Character *hero = new Character(ch == 1?"Gandorf":"Ashe", ch == 1?60:90, ch == 1?40:20);
  100.     while((gameRun != false) || (hero->getHealth() >= 0)) {
  101.         std::cout << "\n" << std::endl;
  102.         std::cout << "    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
  103.         std::cout << "    ³                        Battle-Orc C++ RPG                            ³\n";
  104.         std::cout << "    ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
  105.         std::cout << "    ³     ³                                                                ³\n";
  106.         std::cout << "    ³     ³  Attack:       " << hero->getAttack() << "                                              ³\n";
  107.         std::cout << "    ³     ³  Health:       " << hero->getHealth() << "                                              ³\n";
  108.         std::cout << "    ³     ³  Wins:         " << hero->getWins() << "                                               ³\n";
  109.         std::cout << "    ³     ³  AttackBonus:                                                  ³\n";
  110.         std::cout << "    ³     ³  WeaponList:                                                   ³\n";
  111.         std::cout << "    ³     ³                                                                ³\n";
  112.         std::cout << "    ³                                                                      ³\n";
  113.         std::cout << "    ³     ³                                                                ³\n";
  114.         std::cout << "    ³     ³ [1] Enemy Arena                                                ³\n";
  115.         std::cout << "    ³     ³ [2] Hero Shop                                                  ³\n";
  116.         std::cout << "    ³     ³ [3] Save Character                                             ³\n";
  117.         std::cout << "    ³     ³ [4] Load Character                                             ³\n";
  118.         std::cout << "    ³     ³                                                                ³\n";
  119.         std::cout << "    ³                                                                      ³\n";
  120.         std::cout << "    ³                                                                      ³\n";
  121.         std::cout << "    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
  122.         std::cout << "\t   ";
  123.         std::cin >> ch;
  124.         switch(ch) {
  125.             case(1):
  126.                 visitArena(hero);
  127.                 break;
  128.             case(2):
  129.                 visitShop(hero);
  130.                 break;
  131.             case(3):
  132.                 hero->saveCharacter();
  133.                 break;
  134.             case(4):
  135.                 hero->loadCharacter("hero.txt");
  136.                 break;
  137.         }
  138.     }
  139.     delete hero;
  140.     std::cin.get();
  141.     return 0;
  142. }
  143.  
  144. void visitArena(Character *hero)
  145. {
  146.     int choice;
  147.     bool enemyAttacks[9] = { false, false, false, false, false, false, false, false, false };
  148.     while(hero->getHealth() >= 0) {
  149.         system("cls");
  150.         std::cout << "\n" << std::endl;
  151.         std::cout << "\t       ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
  152.         std::cout << "\t       ³             Hero vs Enemy Arena             ³\n";
  153.         std::cout << "\t       ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
  154.         std::cout << "\t       ³      Hero Health: "  << hero->getHealth() <<  "                        ³\n";
  155.         std::cout << "\t       ³      Hero Attack: "  << hero->getAttack() <<  "                        ³\n";
  156.         std::cout << "\t       ³      Level:       "  << (hero->getWins() < 7?"Beginner":"Master  ") <<  "\t\t     ³\n";
  157.         std::cout << "\t       ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
  158.         std::cout << "\t       ³     ³                                       ³\n";
  159.         std::cout << "\t       ³     ³ [1]  Bastion                          ³\n";
  160.         std::cout << "\t       ³     ³ [2]  Ryne                             ³\n";
  161.         std::cout << "\t       ³     ³ [3]  Jayce                            ³\n";
  162.         std::cout << "\t       ³     ³ [4]  Jax                              ³\n";
  163.         std::cout << "\t       ³     ³ [5]  Simon                            ³\n";
  164.         std::cout << "\t       ³     ³ [6]  Ezreal                           ³\n";
  165.         std::cout << "\t       ³     ³ [7]  BlitzCrank                       ³\n";
  166.         std::cout << "\t       ³     ³ [8]  Annie                            ³\n";
  167.         std::cout << "\t       ³     ³ [9]  Draven                           ³\n";
  168.         std::cout << "\t       ³     ³ [10] Exit                             ³\n";
  169.         std::cout << "\t       ³     ³                                       ³\n";
  170.         std::cout << "\t       ³                                             ³\n";
  171.         std::cout << "\t       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
  172.         std::cout << "\t\t";
  173.         std::cin >> choice;
  174.         if(choice == 10)
  175.             break;
  176.         if(enemyAttacks[choice+1] == false) {
  177.             Character *enemy = new Character("Enemy", (choice * 10), (choice * 4));
  178.             srand(time(NULL));
  179.             while((hero->getHealth() >= 0) && (enemy->getHealth() >= 0)) {
  180.                 hero->attackPlayer(enemy);
  181.                 enemy->attackPlayer(hero);
  182.             }
  183.             if(hero->getHealth() >= 0) {
  184.                 std::cout << "\t\tYou won!" << std::endl;
  185.                 enemyAttacks[choice+1] = true;
  186.                 hero->win();
  187.             } else {
  188.                 std::cout << "\t\tYou lost." << std::endl;
  189.             }
  190.         }
  191.         else {
  192.             std::cout << "\t\tYou've already beaten that enemy." << std::endl;
  193.         }
  194.         std::cin.get();
  195.         std::cin.get();
  196.     }
  197. }
  198.  
  199. void visitShop(Character *hero)
  200. {
  201.     int choice;
  202.     std::cout << "\t       ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
  203.     std::cout << "\t       ³                Hero Main Shop               ³\n";
  204.     std::cout << "\t       ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
  205.     std::cout << "\t       ³      Hero Wins: "  << hero->getWins() <<  "                           ³\n";
  206.     std::cout << "\t       ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
  207.     std::cout << "\t       ³     ³                                       ³\n";
  208.     std::cout << "\t       ³     ³ [1] - Flame Rod   - +10atk - 4w       ³\n";
  209.     std::cout << "\t       ³     ³ [2] - Flame Sword - +16atk - 7w       ³\n";
  210.     std::cout << "\t       ³     ³ [3] - Dark Watch  - +20atk - 10w      ³\n";
  211.     std::cout << "\t       ³     ³ [4] - Miners Eye  - +30atk - 15w      ³\n";
  212.     std::cout << "\t       ³     ³ [5] - Battle Axe  - +35atk - 20w      ³\n";
  213.     std::cout << "\t       ³     ³ [6] - Goblin Axe  - +45atk - 40w      ³\n";
  214.     std::cout << "\t       ³     ³                                       ³\n";
  215.     std::cout << "\t       ³                                             ³\n";
  216.     std::cout << "\t       ³     ³                                       ³\n";
  217.     std::cout << "\t       ³     ³ [7] - Boe Shield  - +10hp  - 2w       ³\n";
  218.     std::cout << "\t       ³     ³ [8] - Dark Shield - +20hp  - 4w       ³\n";
  219.     std::cout << "\t       ³     ³ [9] - Fire Shield - +25hp  - 9w       ³\n";
  220.     std::cout << "\t       ³     ³ [10] - Heal                - 2w       ³\n";
  221.     std::cout << "\t       ³     ³                                       ³\n";
  222.     std::cout << "\t       ³     ³ [11] - Exit                           ³\n";
  223.     std::cout << "\t       ³     ³                                       ³\n";
  224.     std::cout << "\t       ³                                             ³\n";
  225.     std::cout << "\t       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
  226.     std::cout << "\t\t";
  227.     std::cin >> choice;
  228.     switch(choice) {
  229.         case(1):
  230.             hero->attachWeapon("Flame Rod", 10, 4, ATTACK);
  231.             break;
  232.         case(2):
  233.             hero->attachWeapon("Flame Sword", 16, 7, ATTACK);
  234.             break;
  235.         case(3):
  236.             hero->attachWeapon("Dark Watch", 20, 10, ATTACK);
  237.             break;
  238.         case(4):
  239.             hero->attachWeapon("Miners Eye", 30, 15, ATTACK);
  240.             break;
  241.         case(5):
  242.             hero->attachWeapon("Battle Axe", 35, 20, ATTACK);
  243.             break;
  244.         case(6):
  245.             hero->attachWeapon("Goblin Axe", 45, 40, ATTACK);
  246.             break;
  247.         case(7):
  248.             hero->attachWeapon("Boe Shield", 10, 2, HEALTH);
  249.             break;
  250.         case(8):
  251.             hero->attachWeapon("Dark Sheild", 20, 4, HEALTH);
  252.             break;
  253.         case(9):
  254.             hero->attachWeapon("Fire Shield", 25, 9, HEALTH);
  255.             break;
  256.         case(10):
  257.             hero->heal();
  258.             break;
  259.         case(11):
  260.             break;
  261.     }
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement