/* Gönderen Mustafa Başaran */
#include
using std::cout;
using std::cin;
using std::endl;
int grid[3][3];
bool oyna1(int x,int y)
{
if(x>2 || x<0 || y<0 || y>2 ) // doğru yer girildi mi?
{
cout << " Tahtada boyle bir yer var yok!!!\n";
return 0;
}
if(grid[x][y]==0) //daha önce oynanmış mı?
{
grid[x][y]=1;
return 1;
}
else
{
cout<< " Bu kare oynandi!!!! \n";
return 0;
}
}
////////////////////////////////////////////////////////////////////////
bool oyna2(int x,int y)
{
if(x>2 || x<0 || y<0 || y>2 )
{
cout << "Tahtada boyle bir yer yok!!!\n";
return 0;
}
if(grid[x][y]==0 ) //daha önce oynanmış mı?
{
grid[x][y]=2;
return 1;
}
else
{
cout<< "Bu kare oynandi!!!! \n";
return 0;
}
}
////////////////////////////////////////////////////////////////////////
bool bitti()
{
bool doldu=1;
for(int i=0;i<3;i++)
{
if(grid[i][0]==1 && grid[i][1]==1 && grid[i][2]==1 || grid[i][0]==2 && grid[i][1]==2 && grid[i][2]==2) return 1; //satırlar kontrol edilir.kazanan döndürülür
if(grid[0][i]==1 && grid[1][i]==1 && grid[2][i]==1 || grid[0][i]==2 && grid[1][i]==2 && grid[2][i]==2) return 1; //sütunlar kontrol edilir.kazanan döndürülür
}
if(grid[0][0]==1 && grid[1][1]==1 && grid[2][2]==1 || grid[0][0]==2 && grid[1][1]==2 && grid[2][2]==2) return 1; //çapraz kontrol edilir.kazanan döndürülür
if(grid[0][2]==1 && grid[1][1]==1 && grid[2][0]==1 || grid[0][2]==2 && grid[1][1]==2 && grid[2][0]==2) return 1; //çapraz kontrol edilir.kazanan döndürülür
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(grid[i][j]==0) doldu=0;
}
}
if(doldu==1) { cout<< "\n\n Yenilgi!!!\n\n\n"; exit(1); }
return 0;
}
////////////////////////////////////////////////////////////////////////
void yaz()
{
cout<<"\n\n 0 1 2\n";
printf(" %c%c%c%c%c%c%c%c%c\n",201,205,205,205,205,205,205,205,187);
for(int x=0;x<3;x++)
{
for(int y=0;y<3;y++)
{
if(x==0 && y==0) printf("%d%c",0,186);
if(x==1 && y==0) printf("%d%c",1,186);
if(x==2 && y==0) printf("%d%c",2,186);
if(grid[x][y]==0) cout<<" .";
else if(grid[x][y]==1) cout<<" O";
else if(grid[x][y]==2) cout<<" X";
if(y==2) printf(" %c\n",186);
}
}
printf(" %c%c%c%c%c%c%c%c%c\n\n",200,205,205,205,205,205,205,205,188);
}
/////////////////////////////////////////////////////////////////////////
void main()
{
int x,y;
bool k=0;
while(bitti()==0)
{
yaz();
k=0;
while(k==0)
{
cout<< "\n1. ouyncu [ O ]:";
cin>> x >> y;
k=oyna1(x,y);
}
if(bitti()==1){ cout<< "\n HELAL BE! 1. OYUNCU YENER\n\n"; yaz(); exit(1);}
yaz();
k=0;
while(k==0)
{
cout<< "\n2. ouyncu [ X ]:";
cin>> x >> y;
k=oyna2(x,y);
}
if(bitti()==1){ cout<< "\n2. OYUNCU YENİLDİ\n\n"; yaz(); exit(1);}
}
}