#include<iostream>
using namespace std;
char game[3][3] = {{'1','2','3'},{'4','5','6'},{'7','8','9'}};
char turn='X';
int row,column;
bool draw = false;
void Display_Board()
{
system("cls");
cout<<"\tTick Tac Toe Game \n";
cout<<"\t Player1 [X]\n";
cout<<"\t Player2 [O]\n\n";
cout<<"\t | | \n";
cout<<"\t "<<game[0][0]<<" | "<<game[0][1]<<" | "<<game[0][2]<<" \n";
cout<<"\t_____|_____|_____\n";
cout<<"\t | | \n";
cout<<"\t "<<game[1][0]<<" | "<<game[1][1]<<" | "<<game[1][2]<<" \n";
cout<<"\t_____|_____|_____\n";
cout<<"\t | | \n";
cout<<"\t "<<game[2][0]<<" | "<<game[2][1]<<" | "<<game[2][2]<<" \n\n";
}
void Player()
{
int choice;
if(turn == 'X')
cout<<"\tPlayer1 [X] turn : ";
if(turn == 'O')
cout<<"\tPlayer2 [O] turn : ";
cin>>choice;
switch(choice) //using switch for replacing number with player symbol
{
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<<"Invalid choice"; break;
}
if(turn == 'X' && game[row][column]!='X' && game[row][column]!='O') //player turn
{
game[row][column]= 'X';
turn = 'O';
}
else if(turn == 'O' && game[row][column]!='X' && game[row][column]!='O')
{
game[row][column]= 'O';
turn = 'X';
}
else
{
cout<<"Box already filled!\n Please try again !! \n\n";
Player();
}
Display_Board();
}
bool Game_Over()
{
//chech win or not //row //column
for(int i=0;i<3;i++)
if(game[i][0] == game[i][1] && game[i][0]==game[i][2] || game[0][i]==game[1][i] && game[0][i]==game[2][i] )
return false;
//diagonal
if(game[0][0] == game[1][1] && game[0][0] == game[2][2] || game[0][2] == game[1][1] && game[0][2] == game[2][0])
return false;
//if all boxes are filled
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(game[i][j]!= 'X' && game[i][j]!= 'O')
return true ;
//Draw
draw=true;
return false;
}
int main()
{
while(Game_Over())
{
Display_Board();
Player();
Game_Over();
}
if( turn=='X' && draw == false)
cout<<" Player2 [O] wins !! Conragulations\n";
else if( turn=='O' && draw == false)
cout<<" Player1 [X] wins !! Conragulations\n";
else
cout<<" Game Draw !!\n";
}
Output:
