#include <string>
#include <iostream>
#include <sstream>
using namespace std;
bool GameOver();
int ReadNumber(string message);
string ReadString(string message);
string PlayerOne();
string PlayerTwo(int sevenNumbers[7]);
void Player2Values(int sevenNumbers[7], string playerName1, string playerName2);
int main(int argc, char*argv[])
{
	int sevenNumbers[7];
	string playerName1, playerName2;
	bool playAgain = true; 
	

	while (playAgain)
	{

		playerName1 = PlayerOne();
		for (int index = 0; index < 7; index++)
		{
			sevenNumbers[index] = ReadNumber("Please enter a number between 1 and 10, (7 total)");
			if (sevenNumbers[index] < 1 || sevenNumbers[index]>10)
			{
				cout << "Error please enter number between 1-10" << endl;
				index--;
			}
		}
		system("CLS");
		playerName2 = PlayerTwo(sevenNumbers);
		Player2Values(sevenNumbers, playerName1, playerName2);
		playAgain = GameOver();
		cin.get();
	}
	return 0;
}
string PlayerOne()
{
	string playerName1;
	system("pause");
	system("CLS");
	playerName1 = ReadString("Player one, please enter name: ");
	system("CLS");
	cout << playerName1 << endl;
	return playerName1;

}
string PlayerTwo(int sevenNumbers[7])
{
	string playerName2;
	playerName2 = ReadString("Player two, please enter name: ");
	system("CLS");
	cout << playerName2 << endl;
	cout << "The first number is " << sevenNumbers[0] << ". ";
	return playerName2;
}
void Player2Values(int sevenNumbers[7], string playerName1, string playerName2)
{
	string values;
	while (true)
	{
		values = ReadString("Guess if the next number is higher or lower: h = Higher l = Lower: ");
		if (values != "h" && values != "l")
		{
			cout << "Error" << endl;
			continue;
		}
		break;
	}

	for (int index = 0; index < 6; index++)
	{
		if (sevenNumbers[index] > sevenNumbers[index + 1] && values == "l")
		{
			if (index == 5)
			{
				cout << playerName2 << " Wins!" << endl;
				break;
			}
			else
			{
				cout << "Correct, the next value is " << sevenNumbers[index + 1] << endl;
				while (true)
				{
					values = ReadString("Guess if the next number is higher or lower: h = Higher l = Lower: ");
					if (values != "h" && values != "l")
					{
						cout << "Error" << endl;
						continue;
					}
					break;
				}
			}
		}
		else if (sevenNumbers[index] < sevenNumbers[index + 1] && values == "h")
		{
			if (index == 5)
			{
				cout << playerName2 << " Wins!" << endl;
				break;
			}
			else
			{
				cout << "Correct, the next value is " << sevenNumbers[index + 1] << endl;
				while (true)
				{
					values = ReadString("Guess if the next number is higher or lower: h = Higher l = Lower: ");
					if (values != "h" && values != "l")
					{
						cout << "Error" << endl;
						continue;
					}
					break;
				}
			}
		}
		else
		{
			cout << "Incorrect: " << playerName1 << " Wins!" << endl;
			break;
		}
	}
}

bool GameOver()
{
	string play; 
	bool playAgain = false; 
	cout << "Do you want to playe again y/n?" << endl; 
	cin>> play;
	if (play == "y")
	{
	 playAgain = true;
	}
	else
	{
		cout << "Thank you for playing the game" << endl; 

	}
	return playAgain;

}
int ReadNumber(string message)
{
	stringstream stream;
	string input = "";
	int number;

	cout << message << endl;

	getline(cin, input);
	stream.str(input);
	stream >> number;
	stream.clear();

	return number;
}

string ReadString(string message)
{
	string uInput;

	cout << message;

	getline(cin, uInput);

	return uInput;
}
