#include<stdio.h>
#define COL 3
#define ROW 3
void init_board(int arr[COL][ROW])
{
int i = 0;
int j = 0;
for (i = 0; i < COL; i++)
{
for (j = 0; j < ROW; j++)
{
arr[i][j] = ' ';
}
}
}
void print_board(int arr[COL][ROW])
{
int i = 0;
for (i = 0; i < COL; i++)
{
printf(" %c | %c | %c \n", arr[i][0], arr[i][1], arr[i][2]);
if (i != 2)
printf("---|---|---\n");
}
}
void play_move(int arr[COL][ROW])
{
int x, y;
flag:
printf("请输入合适的坐标:>");
scanf_s("%d%d", &x, &y);
x = x - 1;
y = y - 1;
if (arr[x][y] != ' ')
{
printf("输入坐标有误\n");
//play_move(arr);
goto flag;
}
else
{
arr[x][y] = 'X';
}
}
void computer_move(int arr[COL][ROW])
{
int x = 0;
int y = 0;
for (x = 0; x < COL; x++)
{
for (y = 0; y < ROW; y++)
{
if (arr[x][y] == ' ')
{
arr[x][y] = '0';
goto flag;
}
}
}
flag:
if (x*y == 9)
{
printf("平局\n");
}
}
char check_win(int arr[COL][ROW])
{
int i = 0;
for (i = 0; i < COL; i++)
{
if ((arr[i][0] == arr[i][1]) && (arr[i][1] == arr[i][2]))
{
return arr[i][0];
}
}
for (i = 0; i < ROW; i++)
{
if ((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i]))
{
return arr[0][i];
}
}
if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]))
{
return arr[0][0];
}
if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]))
{
return arr[1][1];
}
return ' ';
}
int main()
{
char done;
int arr[COL][ROW];
init_board(arr);
print_board(arr);
do
{
play_move(arr);
done = check_win(arr);
if (done != ' ')
{
break;
}
computer_move(arr);
print_board(arr);
done = check_win(arr);
} while (done == ' ');
print_board(arr);
if (done == 'X')
{
printf("玩家赢\n");
}
else if (done == '0')
{
printf("电脑赢\n");
}
system("pause");
return 0;
}
转载于:https://blog.51cto.com/survive/1705319