Advertisement
Rafpast

wholeMenu

Jul 3rd, 2022
1,119
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int main()
  2. {
  3.     Menu* menu = &Menu::getInstance();
  4.  
  5.     if (menu != NULL)
  6.     {
  7.         menu->startScreen();
  8.         menu->mainMenu();
  9.     }
  10.  
  11.     delete menu;
  12.  
  13.     return 0;
  14. }
  15.  
  16.  
  17. Menu::Menu()
  18. {
  19.     if (!numberName.isVoid())
  20.     {
  21.         numberName.readScoreFromFile("Int");
  22.     }
  23.  
  24.     if (!fullName.isVoid())
  25.     {
  26.         fullName.readScoreFromFile("String");
  27.     }
  28. }
  29.  
  30. void Menu::title()
  31. {
  32.     say.clearScreen();
  33.     say.changeColor(6);
  34.     say.communique("  _______    __________    __    __    __________    _______                    ___       _  ");
  35.     say.communique(" |   ____|  |   ____   |  |  |  /  /  |   ____   |  |  _    |        /\\        |   \\     | | ");
  36.     say.communique(" |  |       |  |    |  |  |  |_/  /   |  |    |  |  | | |   |       /  \\       | |\\ \\    | | ");
  37.     say.communique(" |  |____   |  |    |  |  |      /    |  |    |  |  | |__|  |      / /\\ \\      | | \\ \\   | | ");
  38.     say.communique(" |____   |  |  |    |  |  |     |     |  |    |  |  |  _ _  |     / /__\\ \\     | |  \\ \\  | | ");
  39.     say.communique("      |  |  |  |    |  |  |   _  \\    |  |    |  |  | |   | |    / /____\\ \\    | |   \\ \\ | | ");
  40.     say.communique(" _____|  |  |  |____|  |  |  | \\  \\   |  |____|  |  | |__ | |   / /      \\ \\   | |    \\ \\| | ");
  41.     say.communique("|________|  |__________|  |__|  \\__\\  |__________|  |_______|  /_/        \\_\\  |_|     \\___| ");
  42.     say.communique("\n");
  43.     say.changeColor(15);
  44. }
  45.  
  46. void Menu::showOptions( int& option, string option1, string option2)
  47. {
  48.  
  49.     if(option1 != "Start Game" || option2 != "Close Game")
  50.     {
  51.         say.clearScreen();
  52.     }
  53.    
  54.  
  55.     option = (option > 2) ? (option - 2) : ((option < 1) ? option + 2 : option);
  56.  
  57.     if (option == 1)
  58.     {
  59.         say.communique("                              >> " + option1 + " << ");
  60.         say.communique("                                 " + option2 + "    ");
  61.     }
  62.     else if (option == 2)
  63.     {
  64.         say.communique("                                 " + option1 + "   ");
  65.         say.communique("                              >> " + option2 + " << ");
  66.     }
  67. }
  68.  
  69. void Menu::arrowSupport(int& option, string option1, string option2)
  70. {
  71.     char choice = ' ';
  72.  
  73.     listen.charInput(choice);
  74.  
  75.     switch (choice)
  76.     {
  77.     case 72:
  78.     case 80:
  79.         option = (choice == 72) ? --option : ((choice == 80) ? ++option : option);
  80.         showOptions(option, option1, option2);
  81.     default:
  82.         break;
  83.     }
  84. }
  85.  
  86. void  Menu::mainSelection(int& state, string firstOption, string secondOption)
  87. {
  88.     string name;
  89.     int option = 1;
  90.     char choice = 'w';
  91.  
  92.     if (state == 0)
  93.     {
  94.         title();
  95.     }
  96.  
  97.     showOptions(option, firstOption, secondOption);
  98.     bool condition = true, insideCondition = true, showCondition = true;
  99.  
  100.     while (condition)
  101.     {
  102.         if (listen.isEmpty())
  103.         {
  104.             listen.charInput(choice);
  105.  
  106.             if (static_cast <int>(choice) == -32)
  107.             {
  108.                 if (state == 0)
  109.                 {
  110.                     title();
  111.                 }
  112.  
  113.                 arrowSupport(option, firstOption, secondOption);
  114.             }
  115.             else
  116.             {
  117.                 switch (choice)
  118.                 {
  119.                 case 'w':
  120.                 case 'W':
  121.                     option--;
  122.  
  123.                     if (state == 0)
  124.                     {
  125.                         title();
  126.                     }
  127.                     else if (state == 4)
  128.                     {
  129.                         choice = showCondition ? choice : 27;
  130.                     }
  131.  
  132.                     showOptions(option, firstOption, secondOption);
  133.  
  134.                     break;
  135.                 case 's':
  136.                 case 'S':
  137.                     option++;
  138.  
  139.                     if (state == 0)
  140.                     {
  141.                         title();
  142.                     }
  143.                     else if (state == 4)
  144.                     {
  145.                         choice = showCondition ? choice : 27;
  146.                     }
  147.  
  148.  
  149.                     showOptions(option, firstOption, secondOption);
  150.  
  151.                     break;
  152.                 case ' ':
  153.                     if (option == 1)
  154.                     {
  155.                         condition = false;
  156.                         say.clearScreen();
  157.  
  158.                         if (state == 1)
  159.                         {
  160.                             mapSelection();
  161.                         }
  162.                         else if (state == 2)
  163.                         {
  164.                             levels.game("map1.txt");
  165.                             mapEnd();
  166.                         }
  167.                         else if (state == 3)
  168.                         {
  169.                             showResults("Name:", "Full name results:", false, numberName.mapAccess(), fullName.mapAccess());
  170.                         }
  171.                         else if (state == 4)
  172.                         {
  173.                             if (insideCondition)
  174.                             {
  175.                                 say.communique("Enter your name:  ");
  176.                                 listen.stringInput(name);
  177.                                 addScore(true, name, levels.getScore());
  178.                                 insideCondition = false;
  179.                                 say.clearScreen();
  180.                             }
  181.  
  182.                             say.communique("Your name is: " + name);
  183.                             say.communique("Your result is: " + to_string(levels.getScore()));
  184.                             fullName.saveScoreToFile(fullName.mapAccess(), "String");
  185.  
  186.                             say.stop(2);
  187.                         }
  188.  
  189.                         showOptions(option, firstOption, secondOption);
  190.                     }
  191.                     else if (option == 2)
  192.                     {
  193.                         say.clearScreen();
  194.  
  195.                         if (state == 0)
  196.                         {
  197.                             exit(0);
  198.                         }
  199.                         else if (state == 1)
  200.                         {
  201.                             showScore();
  202.                         }
  203.                         else if (state == 2)
  204.                         {
  205.                             levels.game("map2.txt");
  206.                             mapEnd();
  207.                         }
  208.                         else if (state == 3)
  209.                         {
  210.                             showResults("Id:", "Number results:", true, numberName.mapAccess(), fullName.mapAccess());
  211.                         }
  212.                         else if (state == 4)
  213.                         {
  214.                             if (insideCondition)
  215.                             {
  216.                                 name = to_string(numberName.size() + 1);
  217.                                 addScore(false, name, levels.getScore());
  218.                                 insideCondition = false;
  219.                             }
  220.  
  221.                             say.clearScreen();
  222.                             say.communique("Your number is: " + name);
  223.                             say.communique("Your result is: " + to_string(levels.getScore()));
  224.                             numberName.saveScoreToFile(numberName.mapAccess(), "Int");
  225.  
  226.                             say.stop(2);
  227.                         }
  228.  
  229.                         showOptions(option, firstOption, secondOption);
  230.  
  231.                     }
  232.  
  233.                     showCondition = false;
  234.  
  235.                     break;
  236.                 case 27:
  237.  
  238.                     if (state == 1)
  239.                     {
  240.                         say.clearScreen();
  241.                         state = 0;
  242.                         startScreen();
  243.                     }
  244.                     else if (state == 2 || state == 3 || state == 4)
  245.                     {
  246.                         say.clearScreen();
  247.                         mainMenu();
  248.                     }
  249.  
  250.                     break;
  251.                 default:
  252.                     break;
  253.                 }
  254.             }
  255.         }
  256.     }
  257. }
  258.  
  259. void Menu::startScreen()
  260. {
  261.     int option = 0;
  262.     mainSelection(option, "Start Game", "Close Game");
  263. }
  264.  
  265. void Menu::mainMenu()
  266. {
  267.     int option = 1;
  268.     mainSelection(option, "Chose Map", "Show Score");
  269. }
  270.  
  271. void Menu::mapSelection()
  272. {
  273.     int option = 2;
  274.     mainSelection(option, "First Map", "Second Map");
  275. }
  276.  
  277. void Menu::showScore()
  278. {
  279.     int option = 3;
  280.     mainSelection(option, "Show full name results", "Show number results");
  281. }
  282.  
  283. void Menu::mapEnd()
  284. {
  285.     int option = 4;
  286.     mainSelection(option, "Enter name", "Wait for number");
  287. }
  288.  
  289.  
  290. void Menu::showResults(string name, string resultsName, bool whichOne, map<int, int> intMap, map<string, int> stringMap)
  291. {
  292.     string whatItShows;
  293.     char choice = ' ';
  294.  
  295.     if (!numberName.mapAccess().empty())
  296.     {
  297.         say.communique("\n                              " + resultsName + "\n");
  298.  
  299.         if (whichOne)
  300.         {
  301.             for (const auto& [key, value] : intMap)
  302.             {
  303.                 whatItShows = "                              " + name + to_string(key);
  304.                 whatItShows += " Value: " + to_string(value) + "\n";
  305.  
  306.                 say.communique(whatItShows);
  307.             }
  308.         }
  309.         else
  310.         {
  311.             for (const auto& [key, value] : stringMap)
  312.             {
  313.                 whatItShows = "                              " + name + key;
  314.                 whatItShows += " Value: " + to_string(value) + "\n";
  315.  
  316.                 say.communique(whatItShows);
  317.             }
  318.         }
  319.     }
  320.  
  321.     listen.charInput(choice);
  322.  
  323.     if (listen.isEmpty())
  324.     {
  325.  
  326.     }
  327. }
  328.  
  329. void Menu::addScore(bool which, string name, int value)
  330. {
  331.  
  332.     if (which)
  333.     {
  334.         fullName.add(name, value);
  335.     }
  336.     else
  337.     {
  338.         numberName.add(numberName.size() + 1, value);
  339.     }
  340. }
  341.  
  342. class Menu
  343. {
  344. private:
  345.     Menu();
  346.     output say;
  347.     input listen;
  348.     level levels;
  349.     results<int> numberName{"int"};
  350.     results<string> fullName{"string"};
  351.  
  352. public:
  353.  
  354.     void arrowSupport(int& option, string option1, string option2);
  355.  
  356.     void showOptions(int& option, string option1, string option2);
  357.  
  358.     void mainSelection(int& state, string firstOption, string secondOption);
  359.  
  360.     void showResults(string name, string resultsName, bool whichOne, map<int, int> intMap, map<string, int> stringMap);
  361.  
  362.     void addScore(bool which, string name, int value);
  363.  
  364.     void mapSelection();
  365.  
  366.     void startScreen();
  367.  
  368.     void showScore();
  369.  
  370.     void mainMenu();
  371.  
  372.     void mapEnd();
  373.  
  374.     void title();
  375.  
  376.     static Menu& getInstance()
  377.     {
  378.         static Menu instance;
  379.         return instance;
  380.     }
  381.  
  382.     Menu(Menu const&) = delete;
  383.     void operator=(Menu const&) = delete;
  384. };
  385.  
Advertisement
RAW Paste Data Copied
Advertisement