#include "main.h"
#include <cctype>
int main()
{
using std::cout;
using std::cin;
using std::endl;
Board mainBoard = Board();
cout << "Player 1 Name: ";
string sPlayer1;
cin >> sPlayer1;
sPlayer1 = "\"X\" " + sPlayer1;
cout << "Player 2 Name: ";
string sPlayer2;
cin >> sPlayer2;
sPlayer2 = "\"O\" " + sPlayer2;
mainBoard.ResetBoard();
mainBoard.PrintBoard();
int nSpot = 0;
int setError = 0;
string sCurrentPlayer = "";
sCurrentPlayer = sPlayer1;
bool bPlayAgain = true;
while(bPlayAgain)
{
while(!mainBoard.CheckWinCondition())
{
cout << sCurrentPlayer << "'s turn." << endl;
cout << "Choose a spot: ";
cin >> nSpot;
while(cin.fail())
{
cin.clear();
cin.ignore(100, '\n');
nSpot = 0;
continue;
}
if (sCurrentPlayer == sPlayer1)
{
setError = mainBoard.SetSquare(nSpot, "X");
if(!setError)
{
sCurrentPlayer = sPlayer2;
}
}
else if (sCurrentPlayer == sPlayer2)
{
setError = mainBoard.SetSquare(nSpot, "O");
if(!setError)
{
sCurrentPlayer = sPlayer1;
}
}
mainBoard.PrintBoard();
PrintError(setError);
}
mainBoard.PrintBoard();
string sWinner = mainBoard.GetWinningPlayer();
if (sWinner == "X")
{
cout << sPlayer1 << " wins!!!!" << endl;
} else if (sWinner == "O")
{
cout << sPlayer2 << " wins!!!!" << endl;
} else if (sWinner == "Draw")
{
cout << "It's a draw!!!!" << endl;
}
cout << endl;
cout << "Would you like to play again? ";
string sAnswer = "";
cin >> sAnswer;
const int length = sAnswer.length();
for (int i = 0; i!=length; ++i)
{
sAnswer[i] = std::tolower(sAnswer[i]);
}
if ((sAnswer == "yes") || (sAnswer == "y"))
{
bPlayAgain = true;
mainBoard.ResetBoard();
sCurrentPlayer = sPlayer1;
mainBoard.PrintBoard();
}
else
{
bPlayAgain = false;
}
}
return 0;
}
void PrintError(int error)
{
using std::cout;
using std::endl;
switch (error)
{
case 0:
{
return;
}
case 1:
{
cout << "That spot is taken. Try again." << endl;
return;
}
case 2:
{
cout << "You need to enter a number between 1 and 9. Try again." << endl;
return;
}
default:
{
cout << "Unknown Error. Please restart game." << endl;
return;
}
}
}