输出一个用c语言实现的五子棋程序
时间: 2023-03-04 17:43:51 浏览: 63
以下是一个简单的五子棋程序示例,使用C语言实现。在该程序中,棋盘大小为15x15,玩家通过在命令行输入坐标来下棋。程序会检查每一步下棋后是否有玩家胜利,如果有,程序会输出胜利信息并退出。
```c
#include <stdio.h>
#define BOARD_SIZE 15
#define EMPTY 0
#define PLAYER_1 1
#define PLAYER_2 2
int board[BOARD_SIZE][BOARD_SIZE];
void init_board() {
int i, j;
for (i = 0; i < BOARD_SIZE; i++) {
for (j = 0; j < BOARD_SIZE; j++) {
board[i][j] = EMPTY;
}
}
}
void print_board() {
int i, j;
printf(" ");
for (i = 0; i < BOARD_SIZE; i++) {
printf("%d ", i);
}
printf("\n");
for (i = 0; i < BOARD_SIZE; i++) {
printf("%d ", i);
for (j = 0; j < BOARD_SIZE; j++) {
if (board[i][j] == EMPTY) {
printf(". ");
} else if (board[i][j] == PLAYER_1) {
printf("O ");
} else if (board[i][j] == PLAYER_2) {
printf("X ");
}
}
printf("\n");
}
}
int check_win(int player) {
int i, j, k;
int count = 0;
for (i = 0; i < BOARD_SIZE; i++) {
for (j = 0; j < BOARD_SIZE; j++) {
if (board[i][j] == player) {
// check horizontal
count = 1;
for (k = 1; k < 5 && j + k < BOARD_SIZE && board[i][j + k] == player; k++) {
count++;
}
if (count == 5) return 1;
// check vertical
count = 1;
for (k = 1; k < 5 && i + k < BOARD_SIZE && board[i + k][j] == player; k++) {
count++;
}
if (count == 5) return 1;
// check diagonal (top-left to bottom-right)
count = 1;
for (k = 1; k < 5 && i + k < BOARD_SIZE && j + k < BOARD_SIZE && board[i + k][j + k] == player; k++) {
count++;
}
if (count == 5) return 1;
// check diagonal (bottom-left to top-right)
count = 1;
for (k = 1; k < 5 && i - k >= 0 && j + k < BOARD_SIZE && board[i - k][j + k] == player; k++) {
count++;
}
if (count == 5) return 1;
}
}
}
return 0;
}
void play_game() {
int player = PLAYER_1;
int row, col;
init_board();
while (1) {
printf("Player %d's turn:\n", player);
print_board();
printf("Enter row and column: ");
scanf("%d%d", &row, &col);
if (row < 0