#include<iomanip>
using namespace std;
const int size=4;
void Gameboard(char [][size]);
int main()
{
bool flag=true;
int r,c,p1=0,p2=0,t=0;
char a[size][size]={{'*','*','*','\0' },{'*','*','*','\0'},{'*','*','*','\0'}};
Gameboard(a);
for(int i=1;i<=9 && flag;i++)
{
if(i%2!=0 & flag)
{
p1++;
cout<<"Player 1 turn..!\n";
cout<<"Enter the row and column where u want to put an 'O'..\n";
cout<<"Enter row: ";
cin>>r;
while(r>3 || r<1)
{
cout<<"invalid input..!\nAgian enter row: ";
cin>>r;
}
cout<<"Enter coloumn: ";
cin>>c;
while(c>3 || c<1)
{
cout<<"invalid input..!\nAgian enter column: ";
cin>>c;
}
while(a[r-1][c-1]!='*')
{
cout<<"Your selcted place is already filled select again..!\n"
<<"row: ";
cin>>r;
while(r>3 || r<1)
{
cout<<"invalid input..!\nAgian enter row: ";
cin>>r;
}
cout<<"column: ";
cin>>c;
while(c>3 || c<1)
{
cout<<"invalid input..!\nAgian enter column: ";
cin>>c;
}
}
a[r-1][c-1]='O';
if(p1<3)
Gameboard(a);
else if ((a[0][0]=='O' && a[0][1]=='O' && a[0][2]=='O')
||(a[1][0]=='O' && a[1][1]=='O' && a[1][2]=='O')
||(a[2][0]=='O' && a[2][1]=='O' && a[2][2]=='O')
||(a[0][0]=='O' && a[1][0]=='O' && a[2][0]=='O')
||(a[0][1]=='O' && a[1][1]=='O' && a[2][1]=='O')
||(a[0][2]=='O' && a[1][2]=='O' && a[2][2]=='O')
||(a[0][0]=='O' && a[1][1]=='O' && a[2][2]=='O')
||(a[0][2]=='O' && a[1][1]=='O' && a[2][0]=='O'))
{
Gameboard(a);
cout<<"Player 1 wins..! \n";
t=1;
flag=false;
}
else
Gameboard(a);
}
else
{
if(flag)
{
p2++;
cout<<"player 2 turn..!\n";
cout<<"Enter the row and column where u want to put an 'X'..\n";
cout<<"Enter row: ";
cin>>r;
while(r>3 || r<1)
{
cout<<"invalid input..!\nAgian enter row: ";
cin>>r;
}
cout<<"Enter coloumn: ";
cin>>c;
while(c>3 || c<1)
{
cout<<"invalid input..!\nAgian enter coulmn: ";
cin>>c;
}
while(a[r-1][c-1]!='*')
{
cout<<"Your selcted place is already filled select again..!\n"
<<"row: ";
cin>>r;
while(r>3 || r<1)
{
cout<<"invalid input..!\nAgian enter row: ";
cin>>r;
}
cout<<"column: ";
cin>>c;
while(c>3 || c<1)
{
cout<<"invalid input..!\nAgian enter column: ";
cin>>c;
}
}
a[r-1][c-1]='X';
if(p2<3)
Gameboard(a);
else if ((a[0][0]=='X' && a[0][1]=='X' && a[0][2]=='X')
||(a[1][0]=='X' && a[1][1]=='X' && a[1][2]=='X')
||(a[2][0]=='X' && a[2][1]=='X' && a[2][2]=='X')
||(a[0][0]=='X' && a[1][0]=='X' && a[2][0]=='X')
||(a[0][1]=='X' && a[1][1]=='X' && a[2][1]=='X')
||(a[0][2]=='X' && a[1][2]=='X' && a[2][2]=='X')
||(a[0][0]=='X' && a[1][1]=='X' && a[2][2]=='X')
||(a[0][2]=='X' && a[1][1]=='X' && a[2][0]=='X'))
{
Gameboard(a);
cout<<"Player 2 wins..! \n";
t=1;
flag=false;
}
else
Gameboard(a);
}
}
}
if(t==0)
cout<<"The game has been tie..! \n";
return 0;
}
void Gameboard(char a[][size])
{
cout<<endl<<endl;
for(int row=0;row<4;row++)
{
cout<<setw(40);
for(int col=0;col<4;col++)
{
cout<<a[row][col]<<" ";
}
cout<<endl<<endl;
}
}