帮我用C语言写一个下围棋的游戏
时间: 2023-05-20 19:07:04 浏览: 216
[纯C语言 + Win32 API]一步一步写个围棋程序之二十二:最终代码
5星 · 资源好评率100%
好的,我可以帮您用C语言编写一个下围棋的游戏。下面是一个简单的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#define BOARD_SIZE 15
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] = 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] == 0) {
printf(" .");
} else if (board[i][j] == 1) {
printf(" O");
} else {
printf(" X");
}
}
printf("\n");
}
}
int is_valid_move(int x, int y, int player) {
if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE) {
return 0; // 落子位置越界
}
if (board[x][y] != 0) {
return 0; // 落子位置已有棋子
}
// TODO: 判断是否违反禁手规则
return 1;
}
int is_game_over() {
// TODO: 判断游戏是否结束
return 0;
}
void play_game() {
int player = 1; // 玩家1为O,玩家2为X
int x, y;
while (!is_game_over()) {
printf("Player %d's turn:\n", player);
printf("Enter x and y coordinates (e.g. 3 5): ");
scanf("%d %d", &x, &y);
if (is_valid_move(x - 1, y - 1, player)) {
board[x - 1][y - 1] = player;
print_board();
player = 3 - player; // 切换玩家
} else {
printf("Invalid move, please try again.\n");
}
}
printf("Game over.\n");
}
int main() {
init_board();
print_board();
play_game();
return 0;
}
```
这个程序实现了一个简单的下围棋游戏,玩家可以通过输入坐标来落子,程序会自动判断是否合法并更新棋盘。您可以根据需要进行修改和扩展。
阅读全文