判断五子棋是否胜利五子棋c语言19行列
时间: 2023-08-14 08:07:38 浏览: 131
以下是一个判断五子棋是否胜利的 C 语言代码,占用 19 行:
```c
#include <stdio.h>
#define SIZE 15
int check(int board[][SIZE], int x, int y, int dx, int dy) {
int cnt = 0;
while (x >= 0 && x < SIZE && y >= 0 && y < SIZE && board[x][y] == board[x-dx][y-dy]) {
cnt++;
x += dx;
y += dy;
}
return cnt;
}
int main() {
int board[SIZE][SIZE] = {0}; // 初始化棋盘为全空
int x, y, player = 1, winner = 0;
while (winner == 0) {
printf("Player %d's turn: ", player);
scanf("%d%d", &x, &y);
if (board[x][y] != 0) {
printf("Invalid move, try again.\n");
continue;
}
board[x][y] = player;
for (int dx = -1; dx <= 1; dx++)
for (int dy = -1; dy <= 1; dy++)
if (dx != 0 || dy != 0)
if (check(board, x, y, dx, dy) + check(board, x, y, -dx, -dy) + 1 >= 5) {
winner = player;
break;
}
player = 3 - player; // 切换玩家
}
printf("Player %d wins!\n", winner);
return 0;
}
```
这个程序使用一个二维数组 `board` 来表示棋盘,玩家1和玩家2分别用数字1和2表示。每次玩家落子时,程序会遍历8个方向上的连续棋子,判断是否出现了五子连珠。如果有,则该玩家获胜。程序会不断循环让两个玩家落子,直到有一方胜利。
阅读全文