Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <cmath>
  6.  
  7. using namespace std;
  8.  
  9. inline void Pause() { system("Pause"); }
  10. inline void Clear() { system("CLS"); }
  11.  
  12. #define MAX_ITEMS 10
  13.  
  14. //Variables
  15. string title = "-----[ Hangman ]-----\n --- by Aero ---\n\n";
  16.  
  17. bool HasWon = false;
  18.  
  19. vector<string> Answers =
  20. {
  21. "APPLE",
  22. "NEW YORK",
  23. "I WAS BORN ON A PIRATE SHIP",
  24. "RUSH HOUR 2",
  25. "BARBECUE SAUCE",
  26. "THIS LAND IS YOUR LAND",
  27. "MIND YOUR OWN BUSINESS!",
  28. "LOST AND FOUND",
  29. "JURASSIC PARK",
  30. "FUTURAMA",
  31. "RED SOLO CUP",
  32. "I THINK I'M PARANOID",
  33. "TELL ME SOMETHING I DON'T KNOW",
  34. "DO YOU KNOW DA WAE?",
  35. "SOME PEOPLE CALL ME THE SPACE COWBOY",
  36. "KEURIG",
  37. "CHAPSTICK"
  38. };
  39.  
  40. //functions
  41. int strsame(string input1, string input2)
  42. {
  43. if (input1 == input2) return 1;
  44. return 0;
  45. }
  46.  
  47. void OpenAddAnswers()
  48. {
  49. Clear();
  50. cout << title << "Enter phrases you'd like to add to the answers list:\nTotal Answers: " << Answers.size() << "\nType \"exit\" to return to the main menu.\nPrevious item: " << Answers[Answers.size() - 1] << "\n";
  51. string input;
  52. getline(cin, input);
  53. if (!strsame(input, "exit"))
  54. {
  55. transform(input.begin(), input.end(), input.begin(), ::toupper);
  56. if(input.length() > 0) Answers.push_back(input);
  57. OpenAddAnswers();
  58. }
  59. }
  60.  
  61. void ShowNoose(int frame)
  62. {
  63. switch (frame)
  64. {
  65. case 0:
  66. {
  67. cout << "\n" <<
  68. " ________ \n" <<
  69. " | | \n" <<
  70. " | \n" <<
  71. " | \n" <<
  72. " | \n" <<
  73. " | \n" <<
  74. " | \n" <<
  75. " | \n" <<
  76. " _____|__ \n";
  77. break;
  78. }
  79. case 1:
  80. {
  81. cout << "\n" <<
  82. " ________ \n" <<
  83. " | | \n" <<
  84. " ( ) | \n" <<
  85. " | \n" <<
  86. " | \n" <<
  87. " | \n" <<
  88. " | \n" <<
  89. " | \n" <<
  90. " _____|__ \n";
  91. break;
  92. }
  93. case 2:
  94. {
  95. cout << "\n" <<
  96. " ________ \n" <<
  97. " | | \n" <<
  98. " ( ) | \n" <<
  99. " | | \n" <<
  100. " | | \n" <<
  101. " | | \n" <<
  102. " | \n" <<
  103. " | \n" <<
  104. " _____|__ \n";
  105. break;
  106. }
  107. case 3:
  108. {
  109. cout << "\n" <<
  110. " ________ \n" <<
  111. " | | \n" <<
  112. " ( ) | \n" <<
  113. " | | \n" <<
  114. " | | \n" <<
  115. " | | \n" <<
  116. " / | \n" <<
  117. " | \n" <<
  118. " _____|__ \n";
  119. break;
  120. }
  121. case 4:
  122. {
  123. cout << "\n" <<
  124. " ________ \n" <<
  125. " | | \n" <<
  126. " ( ) | \n" <<
  127. " | | \n" <<
  128. " | | \n" <<
  129. " | | \n" <<
  130. " / \\ | \n" <<
  131. " | \n" <<
  132. " _____|__ \n";
  133. break;
  134. }
  135. case 5:
  136. {
  137. cout << "\n" <<
  138. " ________ \n" <<
  139. " | | \n" <<
  140. " ( ) | \n" <<
  141. " | | \n" <<
  142. " /|\\ | \n" <<
  143. " | | \n" <<
  144. " / \\ | \n" <<
  145. " | \n" <<
  146. " _____|__ \n";
  147. break;
  148. }
  149. case 6:
  150. {
  151. cout << "\n" <<
  152. " ________ \n" <<
  153. " | | \n" <<
  154. " ( ) | \n" <<
  155. " \\|/ | \n" <<
  156. " | | \n" <<
  157. " | | \n" <<
  158. " / \\ | \n" <<
  159. " | \n" <<
  160. " _____|__ \n";
  161. break;
  162. }
  163. }
  164. }
  165.  
  166. void PlayGame()
  167. {
  168. vector<string> BadResponses;
  169. HasWon = false;
  170. string input;
  171. string CorrectAnswer = Answers[rand() % Answers.size()];
  172. string AnswerDisplay;
  173. for (int i = 0; i < CorrectAnswer.size(); i++)
  174. {
  175. if (!(CorrectAnswer[i] == ' '))
  176. {
  177. switch (CorrectAnswer[i])
  178. {
  179. case '\'':
  180. {
  181. AnswerDisplay.replace(i, 1, "'");
  182. break;
  183. }
  184. case ';':
  185. {
  186. AnswerDisplay.replace(i, 1, ";");
  187. break;
  188. }
  189. case ':':
  190. {
  191. AnswerDisplay.replace(i, 1, ":");
  192. break;
  193. }
  194. case ',':
  195. {
  196. AnswerDisplay.replace(i, 1, ",");
  197. break;
  198. }
  199. case '!':
  200. {
  201. AnswerDisplay.replace(i, 1, "!");
  202. break;
  203. }
  204. case '?':
  205. {
  206. AnswerDisplay.replace(i, 1, "?");
  207. break;
  208. }
  209. default:
  210. {
  211. AnswerDisplay.replace(i, 1, "_");
  212. break;
  213. }
  214. }
  215. }
  216. else AnswerDisplay.replace(i, 1, " ");
  217. }
  218. while (!HasWon && BadResponses.size() < 5)
  219. {
  220. Clear();
  221. ShowNoose(BadResponses.size());
  222. cout << "\nIncorrect Responses: " << BadResponses.size() << "/5: ";
  223. for (int i = 0; i < BadResponses.size(); i++)
  224. {
  225. cout << BadResponses[i] << ", ";
  226. }
  227. cout << "\n\n";
  228. for (int i = 0; i < CorrectAnswer.length(); i++)
  229. {
  230. cout << AnswerDisplay[i] << " ";
  231. }
  232. cout << "\n\n";
  233. getline(cin, input);
  234. transform(input.begin(), input.end(), input.begin(), ::toupper);
  235. if (input.length() > 1)
  236. {
  237. if (!strsame(input, CorrectAnswer))
  238. {
  239. BadResponses.push_back(input);
  240. if (BadResponses.size() == 5)
  241. {
  242. AnswerDisplay = CorrectAnswer;
  243. }
  244. }
  245. else
  246. {
  247. AnswerDisplay = CorrectAnswer;
  248. HasWon = true;
  249. }
  250. }
  251. else if (input.length() == 1)
  252. {
  253. int count = 0;
  254. int underscores = 0;
  255. for (int i = 0; i < CorrectAnswer.size(); i++)
  256. {
  257. if (input[0] == CorrectAnswer[i])
  258. {
  259. AnswerDisplay.replace(i, 1, input);
  260. count++;
  261. }
  262. if (AnswerDisplay[i] == '_')
  263. {
  264. underscores++;
  265. }
  266. }
  267. if (underscores == 0) //Guessed all correct letters
  268. {
  269. HasWon = true;
  270. }
  271. if (count == 0)
  272. {
  273. BadResponses.push_back(input);
  274. if (BadResponses.size() == 5)
  275. {
  276. AnswerDisplay = CorrectAnswer;
  277. }
  278. }
  279. }
  280. }
  281. Clear();
  282. ShowNoose(BadResponses.size());
  283. cout << "\nIncorrect Responses: " << BadResponses.size() << "/5: ";
  284. for (int i = 0; i < BadResponses.size(); i++)
  285. {
  286. cout << BadResponses[i] << ", ";
  287. }
  288. cout << "\n\n";
  289. for (int i = 0; i < CorrectAnswer.length(); i++)
  290. {
  291. cout << AnswerDisplay[i] << " ";
  292. }
  293. if (HasWon)
  294. {
  295. cout << "\n\nCongratulations! You Guessed correctly!\n";
  296. }
  297. else
  298. {
  299. cout << "\n\nGAME OVER! You didn't guess correctly.\n";
  300. }
  301. Pause();
  302. }
  303.  
  304. void InitGame()
  305. {
  306. Clear();
  307. int input;
  308. cout << title;
  309. if (HasWon) ShowNoose(6);
  310. else ShowNoose(5);
  311. cout << "\n1) Play Game\n2) Add Answers\n3) Exit Game\n";
  312. cin >> input;
  313. switch (input)
  314. {
  315. case 123:
  316. {
  317. Clear();
  318. cout << title << "Debug Info:\nAnswers.size: " << Answers.size() << "\n";
  319. for (int i = 0; i < Answers.size(); i++)
  320. {
  321. cout << i << ") " << Answers[i] << "\n";
  322. }
  323. Pause();
  324. InitGame();
  325. break;
  326. }
  327. case 1:
  328. {
  329. PlayGame();
  330. InitGame();
  331. break;
  332. }
  333. case 2:
  334. {
  335. OpenAddAnswers();
  336. InitGame();
  337. break;
  338. }
  339. case 3:
  340. {
  341. break;
  342. }
  343. default:
  344. {
  345. InitGame();
  346. break;
  347. }
  348. }
  349. }
  350.  
  351. //main
  352. int main()
  353. {
  354. HasWon = false;
  355. InitGame();
  356. return 0;
  357. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement