Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ TIC TOC game using a multidimensional array. It should allow two humans to p

ID: 3791427 • Letter: C

Question

C++ TIC TOC game using a multidimensional array. It should allow two humans to play together.
Your game must prevent illegal moves and have an option to erase the board to allow for multiple games.

I already craeated the program but im having problem testing the WINNER diagonally and option to ERASE the board and start fresh new game.

Heres my code:

#include <iostream>
using namespace std;

void eraseGameBoard();
void displayBoard();
void playerTurn();
bool gameover();

char turn;
bool draw = false;
char board[3][3] = { { '1','2','3'},{ '4','5','6'},{ '7','8','9'} };

int main()
{
   cout << "Tic Toc Toe Game ";
   cout << "Player 1 [X] ------ Player 2 [O] ";
   turn = 'X';

   while (!gameover())
   {
       displayBoard();
       playerTurn();
       gameover();
   }

   if (turn == 'O' && !draw)
   {
       displayBoard();
       cout << endl << endl << "player 1 [X] Wins! Game Over! ";
   }
   else if (turn == 'X' && !draw)
   {
       displayBoard();
       cout << endl << endl << "player 2 [O] Wins! Game Over! ";
   }
   else
   {
       displayBoard();
       cout << endl << endl << "It's a draw! Game Over! ";
   }

return 0;
}

void eraseGameBoard()
{
   cout << endl;
   cout << " | | " << endl;
   cout << " " << board[0][0] << " | " << board[0][1] << " | " << board[0][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[1][0] << " | " << board[1][1] << " | " << board[1][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[2][0] << " | " << board[2][1] << " | " << board[2][2] << endl;
   cout << " | | " << endl;
}

void displayBoard()
{
   cout << endl;
   cout << " | | " << endl;
   cout << " " << board[0][0] << " | " << board[0][1] << " | " << board[0][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[1][0] << " | " << board[1][1] << " | " << board[1][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[2][0] << " | " << board[2][1] << " | " << board[2][2] << endl;
   cout << " | | " << endl;
}


void playerTurn()
{
   int choice;
   int row = 0, column = 0;

   if (turn == 'X')
   {
       cout << "Player 1 turn [X]: ";
   }
   else if (turn == 'O')
   {
       cout << "Player 2 turn [O]: ";
   }
   cin >> choice;

   switch (choice)
   {
       case 1: row = 0; column = 0; break;
       case 2: row = 0; column = 1; break;
       case 3: row = 0; column = 2; break;
       case 4: row = 1; column = 0; break;
       case 5: row = 1; column = 1; break;
       case 6: row = 1; column = 2; break;
       case 7: row = 2; column = 0; break;
       case 8: row = 2; column = 1; break;
       case 9: row = 2; column = 2; break;
       default:
           cout << "Illegal move! Try again ";
           playerTurn();
   }

   if (turn == 'X' && board[row][column] != 'X' && board[row][column] != 'O')
   {
       board[row][column] = 'X';
       turn = 'O';      
   }
   else if(turn == 'O' && board[row][column] != 'X' && board[row][column] != 'O')
   {
       board[row][column] = 'O';
       turn = 'X';
   }
   else
   {
       cout << "The cell you chose is used! Choose another one ";
       playerTurn();
   }
}

bool gameover()
{
   for (int i = 0; i < 3; i++)
   {
       if ((board[i][0] == board[i][1] && board[i][1] == board[i][2]) || (board[0][i] == board[1][i] && board[1][i] == board[2][i]))
       {
           return true;
       }
   }

   for (int i = 0; i < 3; i++)
   {
       for (int j = 0; j < 3; j++)
       {
           if (board[i][j] != 'X' && board[i][j] != 'O')
           {
               return false;
           }
       }
   }

   draw = true;
   return true;
}

Explanation / Answer

#include <iostream>
using namespace std;

void eraseGameBoard();
void displayBoard();
void playerTurn();
bool gameover();

char turn;
bool draw = false;
char board[3][3] = { { '1','2','3'},{ '4','5','6'},{ '7','8','9'} };

int main()
{
   cout << "Tic Toc Toe Game ";
   cout << "Player 1 [X] ------ Player 2 [O] ";
   turn = 'X';

   while (!gameover())
   {
       displayBoard();
       playerTurn();
       gameover();
   }

   if (turn == 'O' && !draw)
   {
       displayBoard();
       cout << endl << endl << "player 1 [X] Wins! Game Over! ";
   }
   else if (turn == 'X' && !draw)
   {
       displayBoard();
       cout << endl << endl << "player 2 [O] Wins! Game Over! ";
   }
   else
   {
       displayBoard();
       cout << endl << endl << "It's a draw! Game Over! ";
   }

return 0;
}

void eraseGameBoard()
{
   cout << endl;
   cout << " | | " << endl;
   cout << " " << board[0][0] << " | " << board[0][1] << " | " << board[0][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[1][0] << " | " << board[1][1] << " | " << board[1][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[2][0] << " | " << board[2][1] << " | " << board[2][2] << endl;
   cout << " | | " << endl;
}

void displayBoard()
{
   cout << endl;
   cout << " | | " << endl;
   cout << " " << board[0][0] << " | " << board[0][1] << " | " << board[0][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[1][0] << " | " << board[1][1] << " | " << board[1][2] << endl;
   cout << "____|____|____" << endl;
   cout << " | | " << endl;
   cout << " " << board[2][0] << " | " << board[2][1] << " | " << board[2][2] << endl;
   cout << " | | " << endl;
}


void playerTurn()
{
   int choice;
   int row = 0, column = 0;

   if (turn == 'X')
   {
       cout << "Player 1 turn [X]: ";
   }
   else if (turn == 'O')
   {
       cout << "Player 2 turn [O]: ";
   }
   cin >> choice;

   switch (choice)
   {
       case 1: row = 0; column = 0; break;
       case 2: row = 0; column = 1; break;
       case 3: row = 0; column = 2; break;
       case 4: row = 1; column = 0; break;
       case 5: row = 1; column = 1; break;
       case 6: row = 1; column = 2; break;
       case 7: row = 2; column = 0; break;
       case 8: row = 2; column = 1; break;
       case 9: row = 2; column = 2; break;
       default:
           cout << "Illegal move! Try again ";
           playerTurn();
   }

   if (turn == 'X' && board[row][column] != 'X' && board[row][column] != 'O')
   {
       board[row][column] = 'X';
       turn = 'O';      
   }
   else if(turn == 'O' && board[row][column] != 'X' && board[row][column] != 'O')
   {
       board[row][column] = 'O';
       turn = 'X';
   }
   else
   {
       cout << "The cell you chose is used! Choose another one ";
       playerTurn();
   }
}

bool gameover()
{
   for (int i = 0; i < 3; i++)
   {
       if ((board[i][0] == board[i][1] && board[i][1] == board[i][2]) || (board[0][i] == board[1][i] && board[1][i] == board[2][i]))
       {
           return true;
       }
   }

   for (int i = 0; i < 3; i++)
   {
       for (int j = 0; j < 3; j++)
       {
           if (board[i][j] != 'X' && board[i][j] != 'O')
           {
               return false;
           }
       }
   }

   draw = true;
   return true;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote