#include <stdio.h>
#include <stdlib.h>
char print(char a[][3],int b)
{
printf("%c | %c | %c\n",a[b][0],a[b][1],a[b][2]);
if(b!=2)
{
printf("- + - + -\n");
}
}
int judge(char a[][3])
{
int b;
for(b=0;b<=2;b++)
{
if(a[b][0]==a[b][1]&&a[b][1]==a[b][2]&&a[b][0]!=' ')
{
return 1;
}
}
for(b=0;b<=2;b++)
{
if(a[0][b]==a[1][b]&&a[1][b]==a[2][b]&&a[0][b]!=' ')
{
return 1;
}
}
if(a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[1][1]!=' ')
{
return 1;
}
if(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[1][1]!=' ')
{
return 1;
}
}
int full(char a[][3])
{
int b,c,d=0;
for(b=1;b<=3;b++)
{
for(c=1;c<=3;c++)
{
if(a[b][c]!=' ')
{
d++;
}
}
}
if(d==9)
{
return 1;
}
}
int occ(char a[][3],int x,int y)
{
if(a[x][y]==' ')
{
return 1;
}
}
int main()
{
start:
printf("Welcome to Tic, input 's' to start:");
char start;
scanf("%c",&start);
getchar();
if(start!='s')
{
goto start;
}
char tic[3][3] = {{' ',' ',' '},{' ',' ',' '},{' ',' ',' '}};
int end=0;
int round=1;
int fall;
int player=1;
int x,y;
int stop=0;
char again;
int empty=0;
while(end != 1&&stop!=1)
{
printf("round%d\n",round);
int row=0;
while(row<=2)
{
print(tic,row);
row++;
}
printf("Please player %d fall '0.0':",player);
again:
scanf("%d.%d",&x,&y);
x--;
y--;
empty = occ(tic,x,y);
if(x<=2&&y<=2&&empty==1)
{
if(player==1)
{
tic[x][y]='X';
}
else
{
tic[x][y]='O';
}
}
else
{
printf("Your input is error,try again:\n");
goto again;
}
end = judge(tic);
if(end==1)
{
int row=0;
while(row<=2)
{
print(tic,row);
row++;
}
printf("Winner is %d\n",player);
}
stop = full(tic);
if(stop==1)
{
printf("Draw\n");
goto final;
}
round++;
if(player==1)
{
player=2;
}
else
{
player=1;
}
}
final:
printf("Play again? Please input 'a':");
getchar();
scanf("%c",&again);
getchar();
if(again=='a')
{
goto start;
}
return 0;
}