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

In the C++ programming language write a program capable of playing Tic-Tac-Toe a

ID: 3607069 • Letter: I

Question

In the C++ programming language write a program capable of playing Tic-Tac-Toe against the user. Your program should use OOP concepts in its design. You can use ASCII art to generate and display the 3x3 playing board. The program should randomly decide who goes first computer or user. Your program should know and inform the user if an illegal move was made (cell already occupied). The program should also announce if one of the players wins or if a draw is achieved. While it is desirable for your program to play a strong game, this is not an Artificial Intelligence course so if your program does not play at a world champion level you will not be penalized for it.

Explanation / Answer

#include <iostream>
#include <conio.h>

using namespace std;

int checkwin( char[]);
void board( char[]);

void main()
{
char TicTacToeBoard[10] = {'o','1','2','3','4','5','6','7','8','9'};
int player = 1,i,choice;

char mark;
do
{
board(TicTacToeBoard);

if(player%2==1)
player=1;
else
player=2;


// player 2
if(player==2)
{
cout << "Players " << player<<endl;
cout<<"Press Enter for CPU"<<endl;
choice=rand()%9;
mark='O';
int turn=1;
int placed=0;
while(placed==0)
{

if (choice == 1 && TicTacToeBoard[1] == '1'){
TicTacToeBoard[1] = mark;
placed=1;
}
else if (choice == 2 && TicTacToeBoard[2] == '2'){

TicTacToeBoard[2] = mark;
placed=1;
}
else if (choice == 3 && TicTacToeBoard[3] == '3'){

TicTacToeBoard[3] = mark;
placed=1;
}
else if (choice == 4 && TicTacToeBoard[4] == '4'){

placed=1;
TicTacToeBoard[4] = mark;
}
else if (choice == 5 && TicTacToeBoard[5] == '5'){

TicTacToeBoard[5] = mark;
placed=1;
}
else if (choice == 6 && TicTacToeBoard[6] == '6'){

TicTacToeBoard[6] = mark;
placed=1;
}
else if (choice == 7 && TicTacToeBoard[7] == '7'){

TicTacToeBoard[7] = mark;
placed=1;
}
else if (choice == 8 && TicTacToeBoard[8] == '8'){

TicTacToeBoard[8] = mark;
placed=1;
}
else if (choice == 9 && TicTacToeBoard[9] == '9'){

TicTacToeBoard[9] = mark;
placed=1;
}

else
{
choice=rand()%9;
}
}
i=checkwin(TicTacToeBoard);
player++;
_getche();
board(TicTacToeBoard);
}

// player 1
else if(player==1)
{
cout << "Players " << player << ", enter a number: ";
cin >> choice;
mark='X';

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

TicTacToeBoard[1] = mark;
else if (choice == 2 && TicTacToeBoard[2] == '2')

TicTacToeBoard[2] = mark;
else if (choice == 3 && TicTacToeBoard[3] == '3')

TicTacToeBoard[3] = mark;
else if (choice == 4 && TicTacToeBoard[4] == '4')

TicTacToeBoard[4] = mark;
else if (choice == 5 && TicTacToeBoard[5] == '5')

TicTacToeBoard[5] = mark;
else if (choice == 6 && TicTacToeBoard[6] == '6')

TicTacToeBoard[6] = mark;
else if (choice == 7 && TicTacToeBoard[7] == '7')

TicTacToeBoard[7] = mark;
else if (choice == 8 && TicTacToeBoard[8] == '8')

TicTacToeBoard[8] = mark;
else if (choice == 9 && TicTacToeBoard[9] == '9')

TicTacToeBoard[9] = mark;
else
{
cout<<"Invalid move ";

player--;
_getche();
}
i=checkwin(TicTacToeBoard);

player++;
}
}while(i==-1);
board(TicTacToeBoard);
if(i==1)

cout<<"Congratulation! Player "<<--player<<" win ";
else
cout<<" OOps! Game draw";

_getche();
}

void board(char TicTacToeBoard[])
{
system("cls");
cout << " Tic Tac Toe ";

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

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

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

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

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

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

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


int checkwin(char TicTacToeBoard[])
{
if (TicTacToeBoard[1] == TicTacToeBoard[2] && TicTacToeBoard[2] == TicTacToeBoard[3])

return 1;
else if (TicTacToeBoard[4] == TicTacToeBoard[5] && TicTacToeBoard[5] == TicTacToeBoard[6])

return 1;
else if (TicTacToeBoard[7] == TicTacToeBoard[8] && TicTacToeBoard[8] == TicTacToeBoard[9])

return 1;
else if (TicTacToeBoard[1] == TicTacToeBoard[4] && TicTacToeBoard[4] == TicTacToeBoard[7])

return 1;
else if (TicTacToeBoard[2] == TicTacToeBoard[5] && TicTacToeBoard[5] == TicTacToeBoard[8])

return 1;
else if (TicTacToeBoard[3] == TicTacToeBoard[6] && TicTacToeBoard[6] == TicTacToeBoard[9])

return 1;
else if (TicTacToeBoard[1] == TicTacToeBoard[5] && TicTacToeBoard[5] == TicTacToeBoard[9])

return 1;
else if (TicTacToeBoard[3] == TicTacToeBoard[5] && TicTacToeBoard[5] == TicTacToeBoard[7])

return 1;
else if (TicTacToeBoard[1] != '1' && TicTacToeBoard[2] != '2' && TicTacToeBoard[3] != '3'
&& TicTacToeBoard[4] != '4' && TicTacToeBoard[5] != '5' && TicTacToeBoard[6] != '6'
&& TicTacToeBoard[7] != '7' && TicTacToeBoard[8] != '8' && TicTacToeBoard[9] != '9')

return 0;
else
return -1;
}