Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <ctime>
- #include <fstream>
- #include <vector>
- #define ATTACK 1
- #define HEALTH 2
- class Character
- {
- private:
- std::string name;
- unsigned int health, attack, wins, maxHealth;
- std::vector<std::string> weaponList;
- std::vector<std::string>::iterator _it;
- public:
- Character(const std::string n, const int h, const int a):health(h), attack(a), name(n) {
- wins = 0;
- maxHealth = health;
- }
- std::string getName(void) const { return name; }
- int getHealth (void) const { return health; }
- int getAttack (void) const { return attack; }
- int getMaxHealth (void) const { return maxHealth; }
- int getWins (void) const { return wins; }
- void win (void) { wins++; }
- void takeDmg (const int dmg) { health-=dmg; }
- void heal (void) {
- health = maxHealth;
- wins-=3;
- }
- void attackPlayer(Character *b)
- {
- b->takeDmg((rand() % this->getAttack())+1);
- }
- void attachWeapon(const std::string n, const int add, const int cost, const int tp)
- {
- if(tp == 1) attack+=add;
- else if(tp == 2) maxHealth+=add;
- if(wins >= cost)
- wins-=cost;
- weaponList.push_back(n);
- }
- void printInv(const char manipulator)
- {
- for(_it = weaponList.begin(); _it != weaponList.end(); ++_it) {
- std::cout << *_it << manipulator;
- }
- }
- void saveCharacter(void)
- {
- std::ofstream writeFile("hero.txt");
- if(!writeFile.good())
- std::cerr << "\tError: Could not write to file." << std::endl;
- writeFile << health << "\n" << attack << "\n" << wins << "\n" << maxHealth << "\n" << name;
- std::clog << "\tFile save successful." << std::endl;
- writeFile.close();
- std::cin.get();
- std::cin.get();
- }
- void loadCharacter(const std::string fileName)
- {
- std::ifstream readFile(fileName.c_str());
- if(!readFile.good())
- std::cerr << "Error: Could not read file. " << std::endl;
- std::string buffer;
- while(getline(readFile, buffer, '\n')) {
- }
- readFile.close();
- }
- };
- void visitShop(Character *hero);
- void visitArena(Character *hero);
- bool gameRun = false; // i hate myself for this
- int main(void)
- {
- int ch;
- if(gameRun == false) {
- std::cout << "\n\n\n" << std::endl;
- std::cout << "\t ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ \t ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" << std::endl;
- std::cout << "\t ³ (1) Gandorf ³ \t ³ (2) Ashe ³" << std::endl;
- std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij \t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij" << std::endl;
- std::cout << "\t ³ ³ \t ³ ³" << std::endl;
- std::cout << "\t ³ ³ Attack: 40pts ³ \t ³ ³ Attack: 20pts ³" << std::endl;
- std::cout << "\t ³ ³ Defence: 10pts ³ \t ³ ³ Defence: 15pts ³" << std::endl;
- std::cout << "\t ³ ³ Weapon: BattleAxe ³ \t ³ ³ Weapon: Bow ³" << std::endl;
- std::cout << "\t ³ ³ \t ³ ³" << std::endl;
- std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij \t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij" << std::endl;
- std::cout << "\t ³ ³ Base: Melee ³ \t ³ ³ Base: Ranged ³" << std::endl;
- std::cout << "\t ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ \t ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" << std::endl;
- std::cout << "\t Warrior Choice: ";
- std::cin >> ch;
- gameRun = true;
- }
- Character *hero = new Character(ch == 1?"Gandorf":"Ashe", ch == 1?60:90, ch == 1?40:20);
- while((gameRun != false) || (hero->getHealth() >= 0)) {
- std::cout << "\n" << std::endl;
- std::cout << " ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
- std::cout << " ³ Battle-Orc C++ RPG ³\n";
- std::cout << " ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
- std::cout << " ³ ³ ³\n";
- std::cout << " ³ ³ Attack: " << hero->getAttack() << " ³\n";
- std::cout << " ³ ³ Health: " << hero->getHealth() << " ³\n";
- std::cout << " ³ ³ Wins: " << hero->getWins() << " ³\n";
- std::cout << " ³ ³ AttackBonus: ³\n";
- std::cout << " ³ ³ WeaponList: ³\n";
- std::cout << " ³ ³ ³\n";
- std::cout << " ³ ³\n";
- std::cout << " ³ ³ ³\n";
- std::cout << " ³ ³ [1] Enemy Arena ³\n";
- std::cout << " ³ ³ [2] Hero Shop ³\n";
- std::cout << " ³ ³ [3] Save Character ³\n";
- std::cout << " ³ ³ [4] Load Character ³\n";
- std::cout << " ³ ³ ³\n";
- std::cout << " ³ ³\n";
- std::cout << " ³ ³\n";
- std::cout << " ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
- std::cout << "\t ";
- std::cin >> ch;
- switch(ch) {
- case(1):
- visitArena(hero);
- break;
- case(2):
- visitShop(hero);
- break;
- case(3):
- hero->saveCharacter();
- break;
- case(4):
- hero->loadCharacter("hero.txt");
- break;
- }
- }
- delete hero;
- std::cin.get();
- return 0;
- }
- void visitArena(Character *hero)
- {
- int choice;
- bool enemyAttacks[9] = { false, false, false, false, false, false, false, false, false };
- while(hero->getHealth() >= 0) {
- system("cls");
- std::cout << "\n" << std::endl;
- std::cout << "\t ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
- std::cout << "\t ³ Hero vs Enemy Arena ³\n";
- std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
- std::cout << "\t ³ Hero Health: " << hero->getHealth() << " ³\n";
- std::cout << "\t ³ Hero Attack: " << hero->getAttack() << " ³\n";
- std::cout << "\t ³ Level: " << (hero->getWins() < 7?"Beginner":"Master ") << "\t\t ³\n";
- std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
- std::cout << "\t ³ ³ ³\n";
- std::cout << "\t ³ ³ [1] Bastion ³\n";
- std::cout << "\t ³ ³ [2] Ryne ³\n";
- std::cout << "\t ³ ³ [3] Jayce ³\n";
- std::cout << "\t ³ ³ [4] Jax ³\n";
- std::cout << "\t ³ ³ [5] Simon ³\n";
- std::cout << "\t ³ ³ [6] Ezreal ³\n";
- std::cout << "\t ³ ³ [7] BlitzCrank ³\n";
- std::cout << "\t ³ ³ [8] Annie ³\n";
- std::cout << "\t ³ ³ [9] Draven ³\n";
- std::cout << "\t ³ ³ [10] Exit ³\n";
- std::cout << "\t ³ ³ ³\n";
- std::cout << "\t ³ ³\n";
- std::cout << "\t ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
- std::cout << "\t\t";
- std::cin >> choice;
- if(choice == 10)
- break;
- if(enemyAttacks[choice+1] == false) {
- Character *enemy = new Character("Enemy", (choice * 10), (choice * 4));
- srand(time(NULL));
- while((hero->getHealth() >= 0) && (enemy->getHealth() >= 0)) {
- hero->attackPlayer(enemy);
- enemy->attackPlayer(hero);
- }
- if(hero->getHealth() >= 0) {
- std::cout << "\t\tYou won!" << std::endl;
- enemyAttacks[choice+1] = true;
- hero->win();
- } else {
- std::cout << "\t\tYou lost." << std::endl;
- }
- }
- else {
- std::cout << "\t\tYou've already beaten that enemy." << std::endl;
- }
- std::cin.get();
- std::cin.get();
- }
- }
- void visitShop(Character *hero)
- {
- int choice;
- std::cout << "\t ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
- std::cout << "\t ³ Hero Main Shop ³\n";
- std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
- std::cout << "\t ³ Hero Wins: " << hero->getWins() << " ³\n";
- std::cout << "\t ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij\n";
- std::cout << "\t ³ ³ ³\n";
- std::cout << "\t ³ ³ [1] - Flame Rod - +10atk - 4w ³\n";
- std::cout << "\t ³ ³ [2] - Flame Sword - +16atk - 7w ³\n";
- std::cout << "\t ³ ³ [3] - Dark Watch - +20atk - 10w ³\n";
- std::cout << "\t ³ ³ [4] - Miners Eye - +30atk - 15w ³\n";
- std::cout << "\t ³ ³ [5] - Battle Axe - +35atk - 20w ³\n";
- std::cout << "\t ³ ³ [6] - Goblin Axe - +45atk - 40w ³\n";
- std::cout << "\t ³ ³ ³\n";
- std::cout << "\t ³ ³\n";
- std::cout << "\t ³ ³ ³\n";
- std::cout << "\t ³ ³ [7] - Boe Shield - +10hp - 2w ³\n";
- std::cout << "\t ³ ³ [8] - Dark Shield - +20hp - 4w ³\n";
- std::cout << "\t ³ ³ [9] - Fire Shield - +25hp - 9w ³\n";
- std::cout << "\t ³ ³ [10] - Heal - 2w ³\n";
- std::cout << "\t ³ ³ ³\n";
- std::cout << "\t ³ ³ [11] - Exit ³\n";
- std::cout << "\t ³ ³ ³\n";
- std::cout << "\t ³ ³\n";
- std::cout << "\t ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
- std::cout << "\t\t";
- std::cin >> choice;
- switch(choice) {
- case(1):
- hero->attachWeapon("Flame Rod", 10, 4, ATTACK);
- break;
- case(2):
- hero->attachWeapon("Flame Sword", 16, 7, ATTACK);
- break;
- case(3):
- hero->attachWeapon("Dark Watch", 20, 10, ATTACK);
- break;
- case(4):
- hero->attachWeapon("Miners Eye", 30, 15, ATTACK);
- break;
- case(5):
- hero->attachWeapon("Battle Axe", 35, 20, ATTACK);
- break;
- case(6):
- hero->attachWeapon("Goblin Axe", 45, 40, ATTACK);
- break;
- case(7):
- hero->attachWeapon("Boe Shield", 10, 2, HEALTH);
- break;
- case(8):
- hero->attachWeapon("Dark Sheild", 20, 4, HEALTH);
- break;
- case(9):
- hero->attachWeapon("Fire Shield", 25, 9, HEALTH);
- break;
- case(10):
- hero->heal();
- break;
- case(11):
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement