#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 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; } }