Question: Can you please write a write a Tic-Tac-Toe game that you can play with a friend. Your program will let the two players take turns

Can you please write a write a Tic-Tac-Toe game that you can play with a friend. Your program will let the two players take turns with placing their mark (X or O) on the 3X3 game board. After each turn, the program checks whether there is a winner, a tie, or if the game should continue.

The main function is already written as you can see below. Can you finish the drawBoard and checkWinner3by3 functions please.

#include

#include

using namespace std;

void drawBoard(char board[][3]);

char checkWinner3by3(char board[][3]);

//

// The main funciton is provided for you.

//

// DO NOT MODIFY THE MAIN FUNCTION

//

int main()

{

// This array of chars represents the game board, and it holds the content

// of each space. By default all spaces are set to a blank space.

char board[3][3] = { { ' ',' ',' ' },{ ' ',' ',' ' },{ ' ',' ',' ' } };

// The current player. Because X plays first, initialize to X

char player = 'X';

// The winner. either 'X', 'O', or 't' if it's a tie.

// Or a blank space if the game has not finished.

char winner = ' ';

// These variables will hold the number of the row and column selected

// by the players.

int row;

int column;

// boolean variables used to verify if the move is valid.

bool is_move;

bool is_row;

bool is_column;

cout << "************ TIC TAC TOE ************ ";

// The game loops again and again until the game is over

while (winner == ' ')

{

//set the boolean variables back to false for a new turn.

is_move = false;

is_row = false;

is_column = false;

//draw the board.

drawBoard(board);

// If the game is not yet over show who`s the next player to move

cout << "Player ";

if (player == 'X')

{

cout << 1;

}

else

{

cout << 2;

}

cout << "'s turn:" << endl;

// Loop until the player selects a valid space for their move

is_move = false;

while (!is_move)

{

// Loop until the player selects a valid row

// Assume the user inputs a valid integer

is_row = false;

while (!is_row)

{

cout << "Row: ";

cin >> row;

if (row == 1 || row == 2 || row == 3)

{

is_row = true;

}

else

{

cout << endl << "Invalid row!" << endl;

}

} // end of input row loop

// Loop until the player selects a valid column

// Assume the user inputs a valid integer

is_column = false;

while (!is_column)

{

cout << "Column: ";

cin >> column;

if (column == 1 || column == 2 || column == 3)

{

is_column = true;

}

else

{

cout << endl << "Invalid column!" << endl;

}

} // end of input column loop

// If the space is empty, mark the chosen space and swich players

if (board[row - 1][column - 1] == ' ')

{

// Mark the space and end the player's turn

board[row - 1][column - 1] = player;

is_move = true;

// Switch to the other player

if (player == 'X')

{

player = 'O';

}

else

{

player = 'X';

}

} // end of marking space and changing players

// If the space is occupied

else

{

cout << "The selected space is occupied!" << endl;

cout << "Select a different space:" << endl << endl;

drawBoard(board);

}

} // end of player's move loop

cout << endl; // for nice output formatting

//check if the player won.

winner = checkWinner3by3(board);

//If there's a winner

if (winner == 'X' || winner == 'O')

{

drawBoard(board);

//Display congratulations message

cout << "Congratulations! Player ";

if (winner == 'X')

{

cout << 1;

}

else

{

cout << 2;

}

cout << " is the winner!" << endl;

}

else if (winner == 'T')

{

drawBoard(board);

//Display a message if it`s tie

cout << "It's a tie!" << endl;

}

} // End of player's turn loop

cout << endl;

system("pause");

return 0;

}

//

// Prints the game board

// We know the board is 3 by 3 so we don't need to have the number of rows as

// a parameter.

//

// WRITE THIS FUNCTION

//

void drawBoard(char board[][3])

{

//Draw the top line of the board

// Draw a row of the board and a line under the row

}

//

// Checks the whole board if there is a winner.

// We know the board is 3 by 3 so we don't need to have the number of rows as

// a parameter.

//

// WRITE THIS FUNCTION

//

char checkWinner3by3(char board[][3])

{

// Check all rows

// Check all columns

// Check diagional from upper left to lower right

// Check diagonal from upper right to lower left

// Otherwise, if all spaces are filled, the game is a tie

// If none of the conditions above are true, return a blank space

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!