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

Language is c++ and need to run it in code blocks. Lab : Tic-Tac-Toe In this lab

ID: 3721886 • Letter: L

Question

Language is c++ and need to run it in code blocks.

Lab : Tic-Tac-Toe

In this lab, you are going to use a 2D array to create a program that allows two users to play tic-tac-toe. DO NOT attempt to write the whole program in one shot. Steps 1-3 are specifically focused on making sure that you understand how to use 2D arrays and required for the lab; steps 4-6 are optional, but are good preparation if you have time.

1. Create a 2D character array in your main() function and use nested for loops to fill the array with the letter ‘e’ to represent empty spaces.

2. Create a function to print the board on the screen using a nested for loop. The function prototype is:  
void printBoard (char board [][3]);

3. Create a function that checks whether a particular move (row, col) is valid. A move is valid if the values of row and col are both numbers between 0 and 2 and the space is not already filled with ‘X’ or ‘O’. If the move is valid then the function returns a boolean value of true, otherwise false.   (No loops required.) Here is the function prototype:  
bool isValidMove (char board [][3], int row, int col);

4. Write a function to prompt the user for their next move. Call isValidMove to check if the move is valid and if it is then update the board to reflect the move. The parameter player will be passed ‘X’ if the function is to get X’s move and ‘O’ if it is to get O’s move. The function prototype is:  
void move (char board [][3], char player);

5. Create a function to detect whether the game is over (i.e. either someone has won or a stalemate has been reached). Test to see whether any of the rows, columns or diagonals contain either all Xs or all Os and print out a congratulatory message stating who won if this is the case. Return true if the function finds a winner or if the board is completely full, and return false otherwise. The function prototype is:
bool isGameOver(char board[][3]);

6. Put all the function calls together in main ( ) and alternate getting a move from player X and player O until someone wins.

SC:Windows system321cmd.exe layer 0: please enter the coordinates of your nove row col): 1 0 0 e e Player X: please enter the coordinates of your move row col); 1 1 x e e Player 0: please enter the coordinates of your move row col); 1 1 Invalid move! That cell is already taken Player 0: please enter the coordinates of your move row col); 2 0 x e e O e e Player X: please enter the coordinates of your nove row col) : 2 2 x e e Player X has won! Press anykey to continue

Explanation / Answer

Please find below the code for a much better of the Tic-Tac-Toe in C++

#include <iostream>

using namespace std;

char square[10] = {'o','1','2','3','4','5','6','7','8','9'};

int checkwin();

void board();

int main()

{

int player = 1,i,choice;

char mark;

do

{

board();

player=(player%2)?1:2;

cout << "Player " << player << ", enter a number: ";

cin >> choice;

mark=(player == 1) ? 'X' : 'O';

if (choice == 1 && square[1] == '1')

square[1] = mark;

else if (choice == 2 && square[2] == '2')

square[2] = mark;

else if (choice == 3 && square[3] == '3')

square[3] = mark;

else if (choice == 4 && square[4] == '4')

square[4] = mark;

else if (choice == 5 && square[5] == '5')

square[5] = mark;

else if (choice == 6 && square[6] == '6')

square[6] = mark;

else if (choice == 7 && square[7] == '7')

square[7] = mark;

else if (choice == 8 && square[8] == '8')

square[8] = mark;

else if (choice == 9 && square[9] == '9')

square[9] = mark;

else

{

cout<<"Invalid move ";

player--;

cin.ignore();

cin.get();

}

i=checkwin();

player++;

}while(i==-1);

board();

if(i==1)

cout<<"==>Player "<<--player<<" win ";

else

cout<<"==>Game draw";

cin.ignore();

cin.get();

return 0;

}

/*********************************************

FUNCTION TO RETURN GAME STATUS

1 FOR GAME IS OVER WITH RESULT

-1 FOR GAME IS IN PROGRESS

O GAME IS OVER AND NO RESULT

**********************************************/

int checkwin()

{

if (square[1] == square[2] && square[2] == square[3])

return 1;

else if (square[4] == square[5] && square[5] == square[6])

return 1;

else if (square[7] == square[8] && square[8] == square[9])

return 1;

else if (square[1] == square[4] && square[4] == square[7])

return 1;

else if (square[2] == square[5] && square[5] == square[8])

return 1;

else if (square[3] == square[6] && square[6] == square[9])

return 1;

else if (square[1] == square[5] && square[5] == square[9])

return 1;

else if (square[3] == square[5] && square[5] == square[7])

return 1;

else if (square[1] != '1' && square[2] != '2' && square[3] != '3'

&& square[4] != '4' && square[5] != '5' && square[6] != '6'

&& square[7] != '7' && square[8] != '8' && square[9] != '9')

return 0;

else

return -1;

}

/*******************************************************************

FUNCTION TO DRAW BOARD OF TIC TAC TOE WITH PLAYERS MARK

********************************************************************/

void board()

{

system("cls");

cout << " Tic Tac Toe ";

cout << "Player 1 (X) - Player 2 (O)" << endl << endl;

cout << endl;

cout << " | | " << endl;

cout << " " << square[1] << " | " << square[2] << " | " << square[3] << endl;

cout << "_____|_____|_____" << endl;

cout << " | | " << endl;

cout << " " << square[4] << " | " << square[5] << " | " << square[6] << endl;

cout << "_____|_____|_____" << endl;

cout << " | | " << endl;

cout << " " << square[7] << " | " << square[8] << " | " << square[9] << endl;

cout << " | | " << endl << endl;

}

/*******************************************************************

END OF PROJECT

********************************************************************/