| #include "src/class/player.hpp" | |
| #include "src/class/monster.hpp" | |
| #include "src/interface/battle.hpp" | |
| #include "src/interface/creation.hpp" | |
| #include "src/interface/info.hpp" | |
| #include "src/system/betatest.hpp" | |
| #include "src/system/memory.hpp" | |
| #include "src/system/flag.hpp" | |
|  | |
| #include <iostream> | |
|  | |
| void printMenu(); | |
| 
 | |
| void printMenu() | |
| { | |
|     printf("===== HackTheGame v0.0.1 (Beta) =====\n"); | |
|     printf("[1] Create new Character\n"); | |
|     printf("[2] Character Info\n"); | |
|     printf("[9] Credits\n"); | |
|     printf("[0] Exit\n"); | |
|     printf(">"); | |
| } | |
| 
 | |
| int main(int argc, char const *argv[]) | |
| { | |
|     Player *player; | |
|     Monster *enemy; | |
|     std::cout << "This game is still in closed beta\n" | |
|               << "Please input your beta test code\n" | |
|               << ">" << std::flush; | |
| 
 | |
|     std::string betaCode; | |
|     std::cin >> betaCode; | |
| 
 | |
|     if (BetaTest::check(betaCode)) | |
|     { | |
|         std::cout << "Welcome back tester!\n" | |
|                   << "do you have your character backup code?\n" | |
|                   << "[y/N] " << std::flush; | |
| 
 | |
|         char choice = 'n'; | |
|         std::cin >> choice; | |
| 
 | |
|         if (choice == 'Y' || choice == 'y') | |
|         { | |
|             std::cout << "Please input your backup code\n" | |
|                       << "> " << std::flush; | |
| 
 | |
|             std::string code; | |
|             std::cin >> code; | |
| 
 | |
|             player = Memory::loadFromCode(code); | |
|             if (player == nullptr) | |
|             { | |
|                 std::cout << "Your backup code is invalid, please try again..." << std::endl; | |
|                 return 1; | |
|             } | |
|         } | |
|         else | |
|         { | |
|             player = Creation::ofPlayer(); | |
|         } | |
| 
 | |
|         do | |
|         { | |
|             std::cout << "====== HackTheGame v0.0.2 (Closed Beta) =====\n" | |
|                       << "[1] Character Info\n" | |
|                       << "[2] Hunt Monster\n" | |
|                       << "[3] Fight Boss\n" | |
|                       << "[4] Rest\n" | |
|                       << "[9] Credits\n" | |
|                       << "[0] Exit\n" | |
|                       << ">" << std::flush; | |
| 
 | |
|             choice = '0'; | |
|             std::cin >> choice; | |
|             switch (choice) | |
|             { | |
|             case '1': | |
|                 Info::ofPlayer(player); | |
|                 break; | |
|             case '2': | |
|                 enemy = Creation::ofMonster(); | |
|                 if (enemy != nullptr) | |
|                 { | |
|                     Battle::Start(player, enemy); | |
|                     if (Battle::Lose()) | |
|                     { | |
|                         std::cout << "GAME OVER !!!!" << std::endl; | |
|                         return 0; | |
|                     } | |
|                 } | |
|                 break; | |
|             case '3': | |
|                 enemy = Creation::ofBoss(); | |
|                 if (enemy != nullptr) | |
|                 { | |
|                     Battle::Start(player, enemy); | |
|                     if (Battle::Won()) | |
|                     { | |
|                         Flag::Print(); | |
|                     } | |
|                     else | |
|                     { | |
|                         std::cout << "GAME OVER !!!!" << std::endl; | |
|                         return 0; | |
|                     } | |
|                 } | |
|                 break; | |
|             case '4': | |
|                 std::cout << "You take a rest at nearby Inn...\n" | |
|                           << "You wrote your journey to a diary in some cryptic language...\n" | |
|                           << Memory::saveToCode(player) << "\n" | |
|                           << "You woke up feeling resfreshed...\n" | |
|                           << std::flush; | |
|                 player->restoreHP(); | |
|                 break; | |
|             case '9': | |
|                 Info::ofApplication(); | |
|                 break; | |
|             case '0': | |
|                 return 0; | |
|                 break; | |
|             default: | |
|                 printf("Not Implemented...\n"); | |
|             } | |
| 
 | |
|         } while (choice != 0); | |
|     } | |
|     else | |
|     { | |
|         std::cout << "Invalid code, exiting..." << std::endl; | |
|         return 0; | |
|     } | |
| }
 |