C语言实现三子棋小游戏的示例代码
更新时间:2023-08-09前言
三子棋小游戏是一种经典的井字棋游戏,由两名玩家在3x3的棋盘上轮流下棋,目标是先在横向、纵向或对角线上连成三个相同颜色的棋子。
示例代码
#include// 定义棋盘的大小 #define BOARD_SIZE 3 // 定义棋盘的状态 #define EMPTY ' ' #define PLAYER_X 'X' #define PLAYER_O 'O' // 打印棋盘 void printBoard(char board[BOARD_SIZE][BOARD_SIZE]) { printf("---------\n"); for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { printf("| %c ", board[i][j]); } printf("|\n---------\n"); } } // 判断是否有玩家获胜 int checkWin(char board[BOARD_SIZE][BOARD_SIZE], char player) { // 检查横向 for (int i = 0; i < BOARD_SIZE; i++) { if (board[i][0] == player && board[i][1] == player && board[i][2] == player) { return 1; } } // 检查纵向 for (int j = 0; j < BOARD_SIZE; j++) { if (board[0][j] == player && board[1][j] == player && board[2][j] == player) { return 1; } } // 检查对角线 if ((board[0][0] == player && board[1][1] == player && board[2][2] == player) || (board[0][2] == player && board[1][1] == player && board[2][0] == player)) { return 1; } return 0; } int main() { char board[BOARD_SIZE][BOARD_SIZE]; // 初始化棋盘 for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = EMPTY; } } // 当前玩家,默认为玩家X char currentPlayer = PLAYER_X; // 游戏是否结束的标志 int gameOver = 0; // 游戏循环 while (!gameOver) { printBoard(board); // 当前玩家下棋 int row, col; printf("玩家 %c,请输入棋子的位置(行 列):", currentPlayer); scanf("%d %d", &row, &col); // 下棋位置合法性检查 if (row < 0 || row >= BOARD_SIZE || col < 0 || col >= BOARD_SIZE || board[row][col] != EMPTY) { printf("无效的位置,请重新输入!\n"); continue; } // 在棋盘上落子 board[row][col] = currentPlayer; // 判断是否有玩家获胜 if (checkWin(board, currentPlayer)) { printf("玩家 %c 获胜!\n", currentPlayer); gameOver = 1; } // 判断是否平局 int full = 1; // 棋盘是否已满 for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] == EMPTY) { full = 0; break; } } if (!full) { break; } } if (full && !gameOver) { printf("游戏平局!\n"); gameOver = 1; } // 切换当前玩家 currentPlayer = currentPlayer == PLAYER_X ? PLAYER_O : PLAYER_X; } printBoard(board); return 0; }
代码解释和规范
首先,我们使用了`#define`指令来定义一些常量。`BOARD_SIZE`表示棋盘的大小,这里我们选择了一个3x3的棋盘。`EMPTY`、`PLAYER_X`和`PLAYER_O`表示棋盘上的空格、玩家X和玩家O。
然后,我们定义了几个函数和变量来实现游戏的逻辑。`printBoard`函数用于打印棋盘。`checkWin`函数用于判断是否有玩家获胜。
在`main`函数中,我们首先初始化棋盘,并设置当前玩家为玩家X。然后进入一个游戏循环,直到游戏结束。每一轮循环中,打印棋盘,提示当前玩家输入下棋位置,下棋位置的合法性检查,落子,判断是否有玩家获胜,判断是否平局,最后切换当前玩家。如果游戏结束,打印最终的棋盘。
这段代码使用了C语言来实现三子棋小游戏,并且采用了常见的编码规范,如命名清晰、注释明确、代码缩进等。通过这个示例代码,开发者可以了解到如何使用C语言来实现简单的游戏逻辑。
总结
本示例代码展示了使用C语言实现三子棋小游戏的基本思路和代码结构。我们定义了常量、函数和变量来表示棋盘、玩家和游戏逻辑,并编写了一个游戏循环来处理玩家的输入、判断胜负和结束游戏。通过这个示例代码,开发者可以了解如何在C语言中实现简单游戏的逻辑。