用C语言实现围棋程序代码要求棋盘的行用小写字母表示,列用数字表示,并注释出如何落子棋盘黑(用*显示)白(用o 显示)子和空地(用.表示)情况
时间: 2023-06-17 13:04:47 浏览: 77
以下是一个简单的使用C语言实现围棋程序的代码示例:
```c
#include <stdio.h>
#define BOARD_SIZE 19 // 棋盘大小
#define EMPTY '.' // 空地
#define BLACK '*' // 黑子
#define WHITE 'o' // 白子
char 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 + 1); // 列用数字表示
}
printf("\n");
for (i = 0; i < BOARD_SIZE; i++) {
printf("%c ", i + 'a'); // 行用小写字母表示
for (j = 0; j < BOARD_SIZE; j++) {
printf("%c ", board[i][j]); // 打印棋盘格子
}
printf("\n");
}
}
void put_stone(int row, int col, char stone) {
board[row][col] = stone; // 落子
}
int main() {
int row, col;
init_board();
print_board();
put_stone(3, 3, BLACK); // 黑子落在3行3列
put_stone(3, 4, WHITE); // 白子落在3行4列
print_board();
return 0;
}
```
当程序执行到 `print_board()` 函数时,会打印出当前棋盘的情况,其中空地用 `.` 表示,黑子用 `*` 表示,白子用 `o` 表示。例如,初始棋盘如下:
```
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
a . . . . . . . . . . . . . . . . . . .
b . . . . . . . . . . . . . . . . . . .
c . . . . . . . . . . . . . . . . . . .
d . . . . . . . . . . . . . . . . . . .
e . . . . . . . . . . . . . . . . . . .
f . . . . . . . . . . . . . . . . . . .
g . . . . . . . . . . . . . . . . . . .
h . . . . . . . . . . . . . . . . . . .
i . . . . . . . . . . . . . . . . . . .
j . . . . . . . . . . . . . . . . . . .
k . . . . . . . . . . . . . . . . . . .
l . . . . . . . . . . . . . . . . . . .
m . . . . . . . . . . . . . . . . . . .
n . . . . . . . . . . . . . . . . . . .
o . . . . . . . . . . . . . . . . . . .
p . . . . . . . . . . . . . . . . . . .
q . . . . . . . . . . . . . . . . . . .
r . . . . . . . . . . . . . . . . . . .
s . . . . . . . . . . . . . . . . . . .
t . . . . . . . . . . . . . . . . . . .
```
当执行 `put_stone(3, 3, BLACK);` 和 `put_stone(3, 4, WHITE);` 后,棋盘变为:
```
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
a . . . . . . . . . . . . . . . . . . .
b . . . . . . . . . . . . . . . . . . .
c . . . * o . . . . . . . . . . . . . .
d . . . o * . . . . . . . . . . . . . .
e . . . . . . . . . . . . . . . . . . .
f . . . . . . . . . . . . . . . . . . .
g . . . . . . . . . . . . . . . . . . .
h . . . . . . . . . . . . . . . . . . .
i . . . . . . . . . . . . . . . . . . .
j . . . . . . . . . . . . . . . . . . .
k . . . . . . . . . . . . . . . . . . .
l . . . . . . . . . . . . . . . . . . .
m . . . . . . . . . . . . . . . . . . .
n . . . . . . . . . . . . . . . . . . .
o . . . . . . . . . . . . . . . . . . .
p . . . . . . . . . . . . . . . . . . .
q . . . . . . . . . . . . . . . . . . .
r . . . . . . . . . . . . . . . . . . .
s . . . . . . . . . . . . . . . . . . .
t . . . . . . . . . . . . . . . . . . .
```
其中,`*` 表示黑子,`o` 表示白子。