Guest User

Untitled

a guest
Oct 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. #ifndef MENU_H
  2. #define MENU_H
  3. #include <iostream>
  4. #include <string>
  5. class menu
  6. {
  7. public:
  8. std::string name;
  9. menu *prev;
  10. menu *right;
  11. menu *down;
  12. menu *up;
  13. void displayMenu();
  14. };
  15. #endif
  16.  
  17. #include "menu.h"
  18. void menu::displayMenu()
  19. {
  20. std::string userInput;
  21. std::cout<<name<<" menu:n";
  22. if(prev != 0)
  23. {
  24. std::cout<<"0:"<<prev->name<<" menun";
  25. }
  26. if(up != 0)
  27. {
  28. std::cout<<"1:"<<up->name<<" menun";
  29. }
  30. if(down != 0)
  31. {
  32. std::cout<<"2:"<<down->name<<" menun";
  33. }
  34. if(right != 0)
  35. {
  36. std::cout<<"3:"<<right->name<<" menun";
  37. }
  38. }
  39.  
  40. void buildMenu(menu *menu,std::string name,class menu *prev,class menu* up,class menu* down,class menu* right)
  41. {
  42. menu->name = name;
  43. menu->prev = prev;
  44. menu->right = right;
  45. menu->down = down;
  46. menu->up = up;
  47. }
  48.  
  49. bool valid(std::string userInput,menu *currentMenu)
  50. {
  51. if(userInput != "1" && userInput != "2" && userInput != "3" && userInput != "0")
  52. {
  53. std::cout<<"invalid input n";
  54. return false;
  55. }
  56. if(userInput == "0" && currentMenu->prev == 0)
  57. {
  58. std::cout<<"invalid input n";
  59. return false;
  60. }
  61. if(userInput == "1" && currentMenu->up == 0)
  62. {
  63. std::cout<<"invalid input n";
  64. return false;
  65. }
  66. if(userInput == "2" && currentMenu->down == 0)
  67. {
  68. std::cout<<"invalid input n";
  69. return false;
  70. }
  71. if(userInput == "3" && currentMenu->right == 0)
  72. {
  73. std::cout<<"invalid input n";
  74. return false;
  75. }
  76. return true;
  77. }
  78.  
  79. while(go)
  80. {
  81. currentMenu->displayMenu();
  82. std::cin>>userInput;
  83. while(!valid(userInput,currentMenu)|| (userInput.size() > 1))
  84. {
  85. std::cin.clear();
  86. std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'n');
  87. std::cin>>userInput;
  88. }
  89. switch(userInput[0])
  90. {
  91. case '0':
  92. currentMenu = currentMenu->prev;
  93. break;
  94. case '1':
  95. currentMenu = currentMenu->up;
  96. break;
  97. case '2':
  98. currentMenu = currentMenu->down;
  99. break;
  100. case '3':
  101. currentMenu = currentMenu->right;
  102. }
  103. }
Add Comment
Please, Sign In to add comment