I need a little help with my computer science project. i have written this code for a tic-tac-toe program
Here is the code
CODE
//This program descides where the computer moves by sellecting a random number.
# include <iostream>
# include <ctime>
# include <cstdlib>
using namespace std;
char gameArray[3][3];
char player;
char computer;
int move;
int winner;
bool spaceFree = true;
bool spaceFreePlayer = true;
void printBoard(void);
void initializeBoard(void);
void setMove(int move, char playerType);
void playerMove(void);
void computerMove (void);
int winCheck(void);
int getRandomMove(void);
bool checkSpaceFree(int spaceNumber);
int turnCount = 1;
int main()
{
int turnOrder;
initializeBoard();
cout << "Enter X or O: ";
cin >> player;
if (player == 'x' || player == 'X')
{
player = 'X';
computer ='O';
}
else if (player == 'o' || player == 'O')
{
player = 'O';
computer = 'X';
}
else
{
cout << "You are not good enough for the charactor" << endl
<< "that you selected you are stuck with O" << endl;
player = 'O';
computer = 'X';
}
cout << "\nWould you like to go first(1) or second(2)? ";
cin >> turnOrder;
while (turnOrder !=1 && turnOrder !=2)
{
cout << "\n\nInvalid choice!";
cout << "\nWould you like to go first(1) or second(2)? ";
cin >> turnOrder;
}
cout << "Player: " << player << "\tTurn: " << turnOrder << "\nComputer: " << computer << "\tTurn: " << (3 - turnOrder);
printBoard();
if (turnOrder == 1)
{
while (turnCount < 10)
{
if ((turnCount % 2) == 0)
{
computerMove();
winCheck();
}
else
{
playerMove();
winCheck();
}
}
}
else if(turnOrder == 2)
{
while (turnCount < 10)
{
if ((turnCount % 2) == 0)
{
playerMove();
winCheck();
}
else
{
computerMove();
winCheck();
}
}
}
if (winner == 1)
{
cout << "Player Wins" << endl;
}
else if (winner == 2)
{
cout << "Computer Wins" << endl;
}
else if (winner == 0)
{
cout << "It's a tie!!!" << endl;
}
else
{
cout << "Error in winner calculation!" << endl;
}
return 0;
}
void printBoard()
{
cout << "\n\n\t" << gameArray[0][0] << "|" << gameArray[0][1] << "|" << gameArray[0][2] << endl;
cout << "\t-+-+-" << endl;
cout << "\t" << gameArray[1][0] << "|" << gameArray[1][1] << "|" << gameArray[1][2] << endl;
cout << "\t-+-+-" << endl;
cout << "\t" << gameArray[2][0] << "|" << gameArray[2][1] << "|" << gameArray[2][2] << endl << "\n";
}
void initializeBoard()
{
gameArray[0][0] = '1';
gameArray[0][1] = '2';
gameArray[0][2] = '3';
gameArray[1][0] = '4';
gameArray[1][1] = '5';
gameArray[1][2] = '6';
gameArray[2][0] = '7';
gameArray[2][1] = '8';
gameArray[2][2] = '9';
}
void playerMove()
{
turnCount++;
cout << "Enter the number of the space that you want to move: ";
cin >> move;
spaceFreePlayer = checkSpaceFree(move);
while (move != 1 && move != 2 && move != 3 && move != 4 && move != 5 && move != 6 && move != 7 && move != 8 && move != 9 && spaceFreePlayer == false)
{
cout << "\nInvalid Choice!! Please try again: ";
cin >> move;
}
setMove (move, player);
winner = winCheck();
}
void setMove (int move, char playerType)
{
switch (move)
{
case 1:
gameArray[0][0] = playerType;
break;
case 2:
gameArray[0][1] = playerType;
break;
case 3:
gameArray[0][2] = playerType;
break;
case 4:
gameArray[1][0] = playerType;
break;
case 5:
gameArray[1][1] = playerType;
break;
case 6:
gameArray[1][2] = playerType;
break;
case 7:
gameArray[2][0] = playerType;
break;
case 8:
gameArray[2][1] = playerType;
break;
case 9:
gameArray[2][2] = playerType;
break;
default:
cout << "Invalid move option in setMove()!";
}
}
int winCheck ()
{
if(gameArray [0][0] == player && gameArray[0][1] == player && gameArray[0][2] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [1][0] == player && gameArray[1][1] == player && gameArray[1][2] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [2][0] == player && gameArray[2][1] == player && gameArray[2][2] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [0][0] == player && gameArray[1][0] == player && gameArray[2][0] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [0][1] == player && gameArray[1][1] == player && gameArray[2][1] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [0][2] == player && gameArray[1][2] == player && gameArray[2][2] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [0][0] == player && gameArray[1][1] == player && gameArray[2][2] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [2][0] == player && gameArray[1][1] == player && gameArray[0][2] == player)
{
turnCount = 10;
return 1;
}
else if (gameArray [0][0] == computer && gameArray[0][1] == computer && gameArray[0][2] == computer)
{
turnCount = 10;
return 2;
}
else if (gameArray [1][0] == computer && gameArray[1][1] == computer && gameArray[1][2] == computer)
{
turnCount = 10;
return 2;
}
else if (gameArray [2][0] == computer && gameArray[2][1] == computer && gameArray[2][2] == computer)
{
turnCount = 10;
return 2;
}
else if (gameArray [0][0] == computer && gameArray[1][0] == computer && gameArray[2][0] == computer)
{
turnCount = 10;
return 2;
}
else if (gameArray [0][1] == computer && gameArray[1][1] == computer && gameArray[2][1] == computer)
{
turnCount = 10;
return 2;
}
else if (gameArray [0][2] == computer && gameArray[1][2] == computer && gameArray[2][2] == computer)
{
turnCount = 10;
return 2;
}
else if (gameArray [0][0] == computer && gameArray[1][1] == computer && gameArray[2][2] == computer)
{
turnCount = 10;
return 2;
}
else if (gameArray [2][0] == computer && gameArray[1][1] == computer && gameArray[0][2] == computer)
{
turnCount = 10;
return 2;
}
else
return 0;
}
void computerMove()
{
int randomMove = 1;
turnCount++;
while (spaceFree == false)
{
randomMove = getRandomMove();
spaceFree = checkSpaceFree(randomMove);
}
setMove(randomMove, computer);
cout << "\nComputer's move:";
printBoard();
}
int getRandomMove()
{
srand((unsigned)time(0));
int random;
random = (rand()%9)+1;
while (1)
{
if (random < 1)
{
random = (rand()%9)+1;
}
else if (random > 9)
{
random = (rand()%9)+1;
}
else
{
break;
}
}
return random;
}
bool checkSpaceFree (int spaceNumber)
{
switch(spaceNumber)
{
case 1:
if (gameArray[0][0] == '1')
return true;
else
return false;
case 2:
if (gameArray[0][1] == '2')
return true;
else
return false;
case 3:
if (gameArray[0][2] == '3')
return true;
else
return false;
case 4:
if (gameArray[1][0] == '4')
return true;
else
return false;
case 5:
if (gameArray[1][1] == '5')
return true;
else
return false;
case 6:
if (gameArray[1][2] == '6')
return true;
else
return false;
case 7:
if (gameArray[2][0] == '7')
return true;
else
return false;
case 8:
if (gameArray[2][1] == '8')
return true;
else
return false;
case 9:
if (gameArray[2][2] == '9')
return true;
else
return false;
default:
return false;
}
}
What is happining is for some reason, the boolean statment is not working to determine if the space is open. Any help is great
thanks in advance.