c语言五子棋代码
时间: 2023-08-12 08:23:27 浏览: 62
以下是一个简单的C语言五子棋代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define BOARD_SIZE 15
int board[BOARD_SIZE][BOARD_SIZE] = {0}; // 棋盘
int is_win(int x, int y, int player) // 判断是否胜利
{
int i, j;
int count = 0;
// 水平方向
for (i = x - 4; i <= x; i++) {
if (i < 0 || i + 4 >= BOARD_SIZE) {
continue;
}
count = 0;
for (j = i; j <= i + 4; j++) {
if (board[j][y] == player) {
count++;
}
}
if (count == 5) {
return 1;
}
}
// 垂直方向
for (j = y - 4; j <= y; j++) {
if (j < 0 || j + 4 >= BOARD_SIZE) {
continue;
}
count = 0;
for (i = j; i <= j + 4; i++) {
if (board[x][i] == player) {
count++;
}
}
if (count == 5) {
return 1;
}
}
// 左上到右下方向
for (i = x - 4, j = y - 4; i <= x, j <= y; i++, j++) {
if (i < 0 || i + 4 >= BOARD_SIZE || j < 0 || j + 4 >= BOARD_SIZE) {
continue;
}
count = 0;
for (int k = 0; k < 5; k++) {
if (board[i + k][j + k] == player) {
count++;
}
}
if (count == 5) {
return 1;
}
}
// 左下到右上方向
for (i = x - 4, j = y + 4; i <= x, j >= y; i++, j--) {
if (i < 0 || i + 4 >= BOARD_SIZE || j >= BOARD_SIZE || j - 4 < 0) {
continue;
}
count = 0;
for (int k = 0; k < 5; k++) {
if (board[i + k][j - k] == player) {
count++;
}
}
if (count == 5) {
return 1;
}
}
return 0;
}
void print_board() // 打印棋盘
{
int i, j;
printf(" ");
for (i = 0; i < BOARD_SIZE; i++) {
printf("%2d", i + 1);
}
printf("\n");
for (i = 0; i < BOARD_SIZE; i++) {
printf("%2d", i + 1);
for (j = 0; j < BOARD_SIZE; j++) {
if (board[i][j] == 1) {
printf("●");
} else if (board[i][j] == 2) {
printf("○");
} else {
printf(" ");
}
}
printf("\n");
}
}
int main()
{
int x, y;
int player = 1;
while (1) {
print_board();
printf("player %d's turn:\n", player);
printf("input coordinate(x y):");
scanf("%d %d", &x, &y);
if (x < 1 || x > BOARD_SIZE || y < 1 || y > BOARD_SIZE) {
printf("invalid coordinate, please input again!\n");
continue;
}
if (board[x - 1][y - 1] != 0) {
printf("the coordinate has been occupied, please input again!\n");
continue;
}
board[x - 1][y - 1] = player;
if (is_win(x - 1, y - 1, player)) {
print_board();
printf("player %d wins!\n", player);
break;
}
player = player == 1 ? 2 : 1;
}
return 0;
}
```
此代码仅供参考,实际应用中可能需要进行优化或修改。