|
|
-
- #include <iostream>
- #include <fstream>
- #include <thread>
- #include <chrono>
- #include <random>
- #include <fstream>
- #include <unistd.h>
-
- #include "lib/Character.hpp"
- #include "lib/Spell.hpp"
- #include "lib/UserInterface.hpp"
- #include "lib/BattleInterface.hpp"
-
- std::string loadFlag()
- {
- std::string flagString;
- std::ifstream flagFile("flag.txt");
- flagFile >> flagString;
- flagFile.close();
- return flagString;
- }
-
- int main()
- {
- std::string flag;
- Character *player;
- Character *archMage;
- Character *enemy;
- BattleInterface battle;
- std::vector<Character *> enemies;
-
- flag = loadFlag();
- srand(time(0));
- alarm(600);
-
- UserInterface::welcomeMessage();
- UserInterface::epilogue();
- player = UserInterface::characterCreation();
- archMage = new Character("Arch-Mage", 500, 0, 5000, 5000, 1, 1);
- enemies = {
- new Character("Abby", 1, 1, 10, 5, 1, 1),
- new Character("John", 2, 3, 20, 10, 1, 1),
- new Character("Adam", 3, 7, 40, 25, 1, 1),
- new Character("Christo", 4, 11, 80, 40, 1, 1),
- new Character("Greg", 5, 16, 160, 80, 1, 1),
- };
-
- while (player->isAlive() && !UserInterface::isGameOver())
- {
- int choiceInt = -1;
- char choiceChar = -1;
- UserInterface::menu();
- choiceInt = UserInterface::getNumber(
- "What are you gonna do today?\n>",
- 0, 6);
- switch (choiceInt)
- {
- case 0:
- UserInterface::print("You commit sudoku...\n");
- UserInterface::print("Was it supposed to be seppuku?\n");
- UserInterface::print("Nevermind, you killed yourself.\n");
- player->kill();
- break;
- case 1:
- UserInterface::print("You spend the whole day sleeping...\n");
- UserInterface::print("HP and MP restored.\n");
- player->rest();
- break;
- case 2:
- UserInterface::print("You practice your magic in the yard...\n");
- UserInterface::print("You gained some experience.\n");
- player->increaseExperience((random() % player->getLevel()) + 1);
- break;
- case 3:
- UserInterface::print("List of your classmates:\n");
- UserInterface::enemiesInfo(enemies);
- choiceInt = UserInterface::getNumber("Who would you prefer to train with?\n>", 0, enemies.size());
- UserInterface::print("You are going to spar with:\n");
- UserInterface::characterInfo(enemies.at(choiceInt));
- UserInterface::print("Are you sure? (y/N)\n>");
- std::cin >> choiceChar;
- if (choiceChar == 'y' || choiceChar == 'Y')
- {
- enemy = new Character(*enemies.at(choiceInt));
- battle = BattleInterface(player, enemy);
- battle.start();
- if (battle.getWinner() == player)
- {
- UserInterface::print("You win, you get more experience...\n");
- player->increaseExperience(enemies.at(choiceInt)->getLevel());
- }
- else
- {
- UserInterface::print("You lose, but you still get some experience...\n");
- player->revive();
- player->increaseExperience(enemies.at(choiceInt)->getLevel() / 2);
- }
- delete enemy;
- }
- else
- {
- UserInterface::print("On second thought, you decide to sleep in your room instead...\n");
- player->rest();
- }
-
- break;
- case 4:
- UserInterface::print("You are going to challenge the Arch-Mage...\n");
- UserInterface::print("Are you sure? (y/N)\n>");
- std::cin >> choiceChar;
- if (choiceChar == 'y' || choiceChar == 'Y')
- {
- battle = BattleInterface(player, archMage);
- battle.start();
- if (battle.getWinner() == player)
- {
- UserInterface::print("You win, you get more experience...\n");
- player->increaseExperience(enemies.at(choiceInt)->getLevel());
- UserInterface::print("You win against the Arch-Mage!\n");
- UserInterface::print("He let you take a glimpse to the scroll that you always wanted...\n");
- UserInterface::print("Turns out the content is just some meaningless word...\n");
- UserInterface::print("Here is the content:\n");
- UserInterface::print(flag + "\n");
- }
- else
- {
- UserInterface::print("You lose...\n");
- UserInterface::print("Sadly his spell was to powerful,\n");
- UserInterface::print("You got killed by the arch-mage...\n");
- }
- }
- else
- {
- UserInterface::print("On second thought, you decide to sleep in your room instead...\n");
- player->rest();
- }
- break;
- case 5:
- UserInterface::print("You found some info about the arch-mage:\n");
- UserInterface::characterInfo(archMage);
- break;
- case 6:
- UserInterface::print("You meditate and got some insight to your ability:\n");
- UserInterface::characterInfo(player);
- break;
- }
- UserInterface::nextDay();
- }
- }
|