Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime> //std::time
  3. #include <random> //std::mt19937
  4.  
  5. constexpr int num_of_tries = 7;
  6.  
  7. // generateRandomTarget(min, max) - returns a random (via mersenne) number that user has to guess
  8. int generateRandomTarget(int min, int max)
  9. {
  10. std::mt19937 mersenne(static_cast<std::mt19937::result_type>(std::time(nullptr)));
  11. std::uniform_int_distribution<> targets(min, max);
  12.  
  13. //call targets(mersenne) for a random number on [min, max]
  14. return targets(mersenne);
  15. }
  16.  
  17. // getUserGuess(attempt) - returns a user's guessed number
  18. int getUserGuess(int attempt)
  19. {
  20. std::cout << "Guess #" << num_of_tries - attempt + 1 << ": ";
  21. int g;
  22. std::cin >> g;
  23. //TODO: add error checking for entered user guess
  24. return g;
  25. }
  26.  
  27. // playGame() - plays a complete game of HiLo
  28. void playGame()
  29. {
  30. int target = generateRandomTarget(1, 100);
  31.  
  32. int tries = num_of_tries;
  33. bool hasWon = false;
  34. while(tries > 0)
  35. {
  36. //ask for user guess
  37. int guess = getUserGuess(tries);
  38.  
  39. //evaluate user guess
  40. if(guess == target)
  41. {
  42. hasWon = true;
  43. break;
  44. }
  45. else
  46. {
  47. std::string outcome = (guess > target) ? "high" : "low";
  48. std::cout << "Your guess is too " << outcome << std::endl;
  49. tries--;
  50. }
  51. }
  52.  
  53. if(hasWon)
  54. std::cout << "Correct! You win!" << std::endl;
  55. else
  56. std::cout << "Sorry, you lose. Correct number was " << target << std::endl;
  57. }
  58.  
  59. // getRematch() - ask user if they want to play again
  60. bool getRematch()
  61. {
  62. char answer;
  63. do {
  64. std::cout << "Would you like to play again (y/n)? ";
  65. std::cin >> answer;
  66. } while(answer != 'y' && answer != 'n');
  67.  
  68. return answer == 'y';
  69. }
  70.  
  71. int main() {
  72.  
  73. char input;
  74. do {
  75. playGame();
  76. } while(getRematch());
  77.  
  78. std::cout << "Thank you for playing." << std::endl;
  79. return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement