#include<stdio.h>
#include<cstdlib>
void print_form(char **pf, char *sb);
int sb_check(char sb[3][3]);
char computer_think(char sb[3][3]);
char input_pos();
void main(void)
{
char p;
char computer_turn = 'X';
char turn = 'O';
int k=0;
char *playform[] =
{
" ? | ? | ? ",
"---+---+---",
" ? | ? | ? ",
"---|---|---",
" ? | ? | ? " };
char sb[3][3] = { '1','2','3','4','5','6','7','8','9' };
do {
print_form(playform, (char*)sb);
turn = (turn == 'O') ? 'X':'O';
if (turn == computer_turn)
p = computer_think(sb);
else
p = input_pos();
((char*)sb)[(p - '0') - 1] = turn;
k++;
} while (!sb_check(sb) && k<9 );
print_form(playform, (char*)sb);
if (k == 9)
printf("two player pie!");
else
printf("[%c] player win!", turn);
getchar();
}
void print_form(char ** pf, char * sb)
{
int k=0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; pf[i][j]; j++)
{
if (pf[i][j] == '?')
putchar(sb[k++]);
else
putchar(pf[i][j]);
}
putchar('\n');
}
}
int sb_check(char sb[3][3])
{
for (int i = 0; i < 3; i++)
{
if (sb[i][0] == sb[i][1] && sb[i][1] == sb[i][2])
return 1;
}
for (int i = 0; i < 3; i++)
{
if (sb[0][i] == sb[1][i] && sb[1][i] == sb[2][i])
return 1;
}
if (sb[0][0] == sb[1][1] && sb[1][1] == sb[2][2])
return 1;
else if (sb[0][2] == sb[1][1] && sb[1][1] == sb[2][0])
return 1;
else
return 0;
}
char computer_think(char sb[3][3])
{
char p;
int r;
printf("computer turn\n");
for (int i = 0; i < 3; i++)
{
if (sb[i][0] == sb[i][1] && (sb[i][2] != 'O' && sb[i][2] != 'X'))
{
p = sb[i][2];
break;
}
else if (sb[i][1] == sb[i][2] && (sb[i][0] != 'O' && sb[i][0] != 'X'))
{
p = sb[i][0];
break;
}
else if (sb[i][0] == sb[i][2] && (sb[i][1] != 'O' && sb[i][1] != 'X'))
{
p = sb[i][1];
break;
}
else if (sb[0][i] == sb[1][i] && (sb[2][i] != 'O' && sb[2][i] != 'X'))
{
p = sb[2][i]; break;
}
else if (sb[1][i] == sb[2][i] && (sb[0][i] != 'O' && sb[0][i] != 'X'))
{
p = sb[0][i]; break;
}
else if (sb[0][i] == sb[2][i] && (sb[1][i] != 'O' && sb[1][i] != 'X'))
{
p = sb[1][i]; break;
}
else if (sb[0][0] == sb[1][1] && (sb[2][2] != 'O' && sb[2][2] != 'X'))
{
p = sb[2][2]; break;
}
else if (sb[1][1] == sb[2][2] && (sb[0][0] != 'O' && sb[0][0] != 'X'))
{
p = sb[0][0]; break;
}
else if (sb[0][0] == sb[2][2] && (sb[1][1] != 'O' && sb[1][1] != 'X'))
{
p = sb[1][1]; break;
}
else if (sb[0][2] == sb[1][1] && (sb[2][0] != 'O' && sb[2][0] != 'X'))
{
p = sb[2][0]; break;
}
else if (sb[1][1] == sb[2][0] && (sb[0][2] != 'O' && sb[0][2] != 'X'))
{
p = sb[0][2]; break;
}
else if (sb[0][2] == sb[2][0] && (sb[1][1] != 'O' && sb[1][1] != 'X'))
{
p = sb[1][1]; break;
}
else
{
r = rand() % 9 + 1;
while (((char *)sb)[r - 1] == 'O' || ((char *)sb)[r - 1] == 'X')
{
r = rand() % 9 + 1;
}
p = ((char *)sb)[r - 1];
}
}
return p;
}
char input_pos()
{
char p;
printf("your turn\n");
p = getchar();
getchar();
return p;
}