c语言五子棋完全注释
时间: 2023-07-03 16:26:24 浏览: 93
c语言五子棋源码.zip
以下是一个简单的五子棋游戏的C语言代码,包含了详细的注释,希望能够帮助你理解:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define ROW 15 // 行数
#define COL 15 // 列数
// 棋盘
char board[ROW][COL];
// 初始化棋盘
void init_board() {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
board[i][j] = '+';
}
}
}
// 绘制棋盘
void draw_board() {
int i, j;
printf(" ");
for (i = 0; i < COL; i++) {
printf(" %d", i+1);
}
printf("\n");
for (i = 0; i < ROW; i++) {
printf("%d", i+1);
for (j = 0; j < COL; j++) {
printf(" %c", board[i][j]);
}
printf("\n");
}
}
// 下棋
void move(char ch, int row, int col) {
board[row][col] = ch;
}
// 判断胜负
bool check_win(char ch) {
int i, j, k;
// 检查行
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL-4; j++) {
for (k = 0; k < 5; k++) {
if (board[i][j+k] != ch) {
break;
}
}
if (k == 5) {
return true;
}
}
}
// 检查列
for (i = 0; i < ROW-4; i++) {
for (j = 0; j < COL; j++) {
for (k = 0; k < 5; k++) {
if (board[i+k][j] != ch) {
break;
}
}
if (k == 5) {
return true;
}
}
}
// 检查主对角线
for (i = 0; i < ROW-4; i++) {
for (j = 0; j < COL-4; j++) {
for (k = 0; k < 5; k++) {
if (board[i+k][j+k] != ch) {
break;
}
}
if (k == 5) {
return true;
}
}
}
// 检查副对角线
for (i = 0; i < ROW-4; i++) {
for (j = 4; j < COL; j++) {
for (k = 0; k < 5; k++) {
if (board[i+k][j-k] != ch) {
break;
}
}
if (k == 5) {
return true;
}
}
}
return false;
}
int main() {
init_board(); // 初始化棋盘
draw_board(); // 绘制棋盘
char ch = 'X'; // 先手执黑子
int row, col;
while (true) {
printf("请 %c 方输入落子位置(row, col): ", ch);
scanf("%d%d", &row, &col);
if (row < 1 || row > ROW || col < 1 || col > COL) {
printf("输入错误,请重新输入!\n");
continue;
}
if (board[row-1][col-1] != '+') {
printf("该位置已经有棋子了,请重新输入!\n");
continue;
}
move(ch, row-1, col-1); // 下棋
draw_board(); // 绘制棋盘
if (check_win(ch)) { // 判断胜负
printf("%c 方获胜!\n", ch);
break;
}
if (ch == 'X') {
ch = 'O'; // 轮到另一方下棋
} else {
ch = 'X';
}
}
return 0;
}
```
这个代码实现的是一个简单的人机对弈五子棋游戏。其中,`init_board()`函数初始化棋盘,`draw_board()`函数绘制棋盘,`move()`函数实现下棋,`check_win()`函数判断胜负。在`main()`函数中,首先初始化棋盘并绘制,然后循环让玩家输入下棋位置,每次下完后判断胜负,直到一方获胜为止。
阅读全文