#include <iostream> // basic i/o
#include <iomanip> // output formatting
#include <cstdlib> // rand() and srand()
#include <ctime> // system time
using namespace std;

void question(int maxNum, int numGuesses){
	// 1-10 game, 3 guesses
	// 1-100 game, 5 guesses
	// get system time
	unsigned seed = time(0);
	//seed the random number generator
	srand(seed);
	bool done, winCondition;
	int guesses, choice, secretNumber;
	done = false;
	char playAgain;

	while(!done){
		//Game loop
		guesses = numGuesses;
		winCondition = false;
		secretNumber = (rand() % maxNum) + 1;
		cout << "*** GUESSING GAME ***\n";
		while(guesses > 0 && !winCondition){
			cout << "Choose a random number from 1-" << maxNum << ": ";
			cin >> choice;
			if(0 < choice and choice < maxNum+1){
				if(choice == secretNumber){
					winCondition = true;
					break;
				}else if(choice < secretNumber){
					cout << "You guessed too low." << endl;
				}else{
					cout << "You guessed too high." << endl;
				} 
				guesses--;
				cout << "You have " << guesses << " guesses remaining.\n";
			}else{
				cout << "That's not a valid number.  Try again.\n";
			}
		}
		// out of guesses
		if(winCondition){
			cout << "You guessed it!\n" << "*** YOU WIN!!! ***" << endl;
		}else{
			cout << "Out of guesses! The secret number was: " << secretNumber << endl;
			cout << "*** YOU LOSE!!! ***" << endl;
		}
		cout << "Would you like to play again? (y/n): ";
		cin >> playAgain;
		if(playAgain == 'n' or playAgain == 'N'){ done = true; }
	}

	return;
}


/***** MAIN PROGRAM *****/
int main(){
  // bool done = false;
  // string resp;
  // while(not done){
    question(10,3);
	  // question(100,5);
	  // question(1000,10);
  //   cout << "Do you want to play again?(y/n): ";
  //   cin >> resp;
  //   if(resp == "n" or resp == "N"){
  //     done = true;
  //   }
  // }
	return 0;
}
