#include <cstdlib>
#include <iostream>
#include <ctime> 
using namespace std;

class GadTicTacToe {
  public:
	void init(char, char, bool, bool, int, int);
	int computeNextMove(char, bool, int);
	int emminent(char);
	int secondMove(char);
	int checkForSides(char);
	int checkForCornerSides(char);
	int checkForCorners(char);
	int checkForFreeMove();

	bool player1TakeATurn(int);
	bool player2TakeATurn(int);
	bool player1TakeATurn();
	bool player2TakeATurn();
	bool computerMove(char, int);
	int getAClue(char);

	void nextTurn();
	bool isItFinished();
	bool didSomeoneWin(char);
	bool didPlayer1Win();
	bool didPlayer2Win();
	bool enforceMove(int, char);
	bool isBoardFull();
	int convertFromHumanToComputer(int);
	int convertFromComputerToHuman(int);
	
	void printBoard();
	void printBoardForHuman();

	int checkForNextMove(char);
	int nextMove(char, int);
	char getBox(int);
	int getTurnCounter();

  private:
	char board[9];
	int whoStarts;
	int whoseTurn;
	int turnCounterTotal;
	int turnCounterPlayer1;
	int turnCounterPlayer2;
	char player1Char;
	char player2Char;
	bool p1IsHuman;
	bool p2IsHuman;
	int p1NextMove;
	int p2NextMove;
	int randomFactor;
	int falterChanceP1;
	int falterChanceP2;
	int howManyFaltersP1;
	int howManyFaltersP2;
};

