void PlayerMove(char board[ROW][COL])
{
int x = 0;
int y = 0;
printf("玩家落子:\n");
while (1)
{
printf("请输入坐标 x, y :\n");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= ROW && y >= 1 && y <= COL)
{
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = 'x';
break;
}
else
{
printf("位置已有子,请重新下");
}
}
else
{
printf("坐标错误,请重新输入");
}
}
}
电脑落子
void ComputerMove(char board[ROW][COL])
{
int x = 0;
int y = 0;
while (1)
{
x = rand() % ROW;
y = rand() % COL;
if (board[x][y] == ' ')
{
board[x][y] = 'o';
break;
}
}
}
检测胜利
int Iswin(char board[ROW][COL])
{
int i = 0;
int j = 0;
int count = 0;
for (i = 0; i < ROW; ++i)
{
if (((board[i][0] == board[i][1]) && (board[i][1] == board[i][2])) && ((board[i][0] == 'x')))
{
return 1;
}
}
for (j = 0; j < COL; ++j)
{
if ((board[0][j] == board[1][j]) && (board[1][j] == board[2][j]) && ((board[0][j] == 'x')))
{
return 1;
}
}
if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && ((board[0][0] == 'x')))
{
return 1;
}
if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) && ((board[0][2] == 'x')))
{
return 1;
}
for (i = 0; i < ROW; ++i)
{
if (((board[i][0] == board[i][1]) && (board[i][1] == board[i][2])) && ((board[i][0] == 'o')))
{
return -1;
}
}
for (j = 0; j < COL; ++j)
{
if ((board[0][j] == board[1][j]) && (board[1][j] == board[2][j]) && ((board[0][j] == 'o')))
{
return -1;
}
}
if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && ((board[0][0] == 'o')))
{
return -1;
}
if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) && ((board[0][2] == 'o')))
{
return -1;
}
for (i = 0; i < ROW; ++i)
{
for (j = 0; j < COL; ++j)
{
if (board[i][j] != ' ')
{
++count;
}
}
}
if (count == 9)
{
return 0;
}
return 2;
}
main
int main()
{
srand((unsigned)time(NULL));
char board[ROW][COL] = {0};
InitBoard(board);
int flag = 2;
printf("------------------\n");
printf("---- 1.play ----\n");
printf("---- 0.exit ----\n");
printf("------------------\n");
if (getchar() == '1')
{
while (flag == 2)
{
DisplayBoard(board);
PlayerMove(board);
flag = Iswin(board);
DisplayBoard(board);
if (flag != 2)
{
break;
}
ComputerMove(board);
flag = Iswin(board);
DisplayBoard(board);
}
if (flag == 1)
{
printf("玩家获胜\n");
}
if (flag == -1)
{
printf("电脑获胜\n");
}
if (flag == 0)
{
printf("平局\n");
}
}
system("pause");
return 0;
}