codeblocks的双人对弈C语言围棋代码
时间: 2023-11-12 12:01:58 浏览: 214
这里给出一个简单的双人对弈C语言围棋代码,使用CodeBlocks IDE编写。
```c
#include <stdio.h>
#define BOARD_SIZE 9
char board[BOARD_SIZE][BOARD_SIZE]; // 存储棋盘状态
char player = 'X'; // 当前玩家
void init_board() { // 初始化棋盘
for(int i=0; i<BOARD_SIZE; i++) {
for(int j=0; j<BOARD_SIZE; j++) {
board[i][j] = '.';
}
}
}
void print_board() { // 打印棋盘
printf(" ");
for(int i=0; i<BOARD_SIZE; i++) {
printf("%d", i);
}
printf("\n");
for(int i=0; i<BOARD_SIZE; i++) {
printf("%d", i);
for(int j=0; j<BOARD_SIZE; j++) {
printf("%c", board[i][j]);
}
printf("\n");
}
}
int is_valid_move(int x, int y) { // 判断是否为有效落子
if(x<0 || x>=BOARD_SIZE || y<0 || y>=BOARD_SIZE) { // 落子越界
return 0;
}
if(board[x][y] != '.') { // 落子位置已经有棋子
return 0;
}
return 1;
}
int is_game_over() { // 判断游戏是否结束
for(int i=0; i<BOARD_SIZE; i++) {
for(int j=0; j<BOARD_SIZE; j++) {
if(board[i][j] == '.') {
return 0; // 存在空位,游戏未结束
}
}
}
return 1; // 没有空位,游戏结束
}
char get_winner() { // 获取胜者
int black_count = 0;
int white_count = 0;
for(int i=0; i<BOARD_SIZE; i++) {
for(int j=0; j<BOARD_SIZE; j++) {
if(board[i][j] == 'X') {
black_count++;
}
if(board[i][j] == 'O') {
white_count++;
}
}
}
if(black_count > white_count) {
return 'X';
}
if(black_count < white_count) {
return 'O';
}
return '.'; // 平局
}
void play_game() { // 游戏主循环
int x, y;
while(!is_game_over()) {
print_board();
printf("Player %c's turn\n", player);
printf("Enter move (x,y): ");
scanf("%d,%d", &x, &y);
if(is_valid_move(x, y)) {
board[x][y] = player;
if(player == 'X') {
player = 'O';
} else {
player = 'X';
}
} else {
printf("Invalid move!\n");
}
}
print_board();
char winner = get_winner();
if(winner == '.') {
printf("Game ends in a draw.\n");
} else {
printf("Player %c wins!\n", winner);
}
}
int main() {
init_board();
play_game();
return 0;
}
```
这个棋盘大小为9x9,黑棋用'X'表示,白棋用'O'表示,空位用'.'表示。玩家轮流输入落子的坐标,程序会检查落子是否合法,并在棋盘上显示出来。当游戏结束后,程序会输出胜者或平局的信息。
阅读全文