Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime> //std::time
- #include <random> //std::mt19937
- constexpr int num_of_tries = 7;
- // generateRandomTarget(min, max) - returns a random (via mersenne) number that user has to guess
- int generateRandomTarget(int min, int max)
- {
- std::mt19937 mersenne(static_cast<std::mt19937::result_type>(std::time(nullptr)));
- std::uniform_int_distribution<> targets(min, max);
- //call targets(mersenne) for a random number on [min, max]
- return targets(mersenne);
- }
- // getUserGuess(attempt) - returns a user's guessed number
- int getUserGuess(int attempt)
- {
- std::cout << "Guess #" << num_of_tries - attempt + 1 << ": ";
- int g;
- std::cin >> g;
- //TODO: add error checking for entered user guess
- return g;
- }
- // playGame() - plays a complete game of HiLo
- void playGame()
- {
- int target = generateRandomTarget(1, 100);
- int tries = num_of_tries;
- bool hasWon = false;
- while(tries > 0)
- {
- //ask for user guess
- int guess = getUserGuess(tries);
- //evaluate user guess
- if(guess == target)
- {
- hasWon = true;
- break;
- }
- else
- {
- std::string outcome = (guess > target) ? "high" : "low";
- std::cout << "Your guess is too " << outcome << std::endl;
- tries--;
- }
- }
- if(hasWon)
- std::cout << "Correct! You win!" << std::endl;
- else
- std::cout << "Sorry, you lose. Correct number was " << target << std::endl;
- }
- // getRematch() - ask user if they want to play again
- bool getRematch()
- {
- char answer;
- do {
- std::cout << "Would you like to play again (y/n)? ";
- std::cin >> answer;
- } while(answer != 'y' && answer != 'n');
- return answer == 'y';
- }
- int main() {
- char input;
- do {
- playGame();
- } while(getRematch());
- std::cout << "Thank you for playing." << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement