C语言实现三子棋游戏的示例代码
更新时间:2023-08-09前言
三子棋游戏是一种简单且有趣的棋盘游戏,它通常由两名玩家进行对战。在这个游戏中,棋盘由一个3x3的方格组成,玩家轮流在空白方格中放置自己的棋子,目标是通过先将自己的棋子连成一条直线而获胜。
代码实现
#includechar board[3][3]; // 棋盘数组 char currentPlayer; // 当前玩家 void initializeBoard() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { board[i][j] = '-'; } } } void printBoard() { printf(" 1 2 3\n"); for (int i = 0; i < 3; i++) { printf("%d ", i + 1); for (int j = 0; j < 3; j++) { printf("%c ", board[i][j]); } printf("\n"); } } int isBoardFull() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (board[i][j] == '-') { return 0; // 棋盘还有空余位置 } } } return 1; // 棋盘已满 } int isWinner(char player) { // 检查行 for (int i = 0; i < 3; i++) { if (board[i][0] == player && board[i][1] == player && board[i][2] == player) { return 1; } } // 检查列 for (int i = 0; i < 3; i++) { if (board[0][i] == player && board[1][i] == player && board[2][i] == player) { return 1; } } // 检查对角线 if (board[0][0] == player && board[1][1] == player && board[2][2] == player) { return 1; } if (board[0][2] == player && board[1][1] == player && board[2][0] == player) { return 1; } return 0; } void playGame() { initializeBoard(); currentPlayer = 'X'; while (1) { printf("当前玩家: %c\n", currentPlayer); printBoard(); int row, column; printf("请输入你要下棋的行和列: "); scanf("%d %d", &row, &column); // 检查输入的行和列是否合法 if (row < 1 || row > 3 || column < 1 || column > 3) { printf("无效的行或列,请重新输入!\n"); continue; } // 将玩家的棋子放置到对应的行和列 if (board[row - 1][column - 1] == '-') { board[row - 1][column - 1] = currentPlayer; } else { printf("该位置已被占用,请重新输入!\n"); continue; } // 检查游戏是否结束 if (isWinner(currentPlayer)) { printf("玩家 %c 获胜!\n", currentPlayer); break; } else if (isBoardFull()) { printf("游戏结束,平局!\n"); break; } // 切换玩家 currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; } } int main() { printf("欢迎来到三子棋游戏!\n"); playGame(); return 0; }
代码解释
这段代码使用C语言实现了一个简单的三子棋游戏。代码中定义了一个3x3的棋盘数组 "board",初始化为空白。代码使用循环结构来实现游戏的逻辑流程,其中每次循环表示一个玩家的回合。玩家输入行和列来放置棋子,然后判断是否有玩家胜利或平局,若没有则切换到另一个玩家。
代码中包含了一些辅助函数,例如"initializeBoard"函数用于初始化棋盘数组,"printBoard"函数用于打印当前棋盘状态,"isBoardFull"函数用于检查棋盘是否已满(平局),"isWinner"函数用于检查是否有玩家胜利。
总结
通过这个简单的示例代码,我们可以理解如何使用C语言实现一个三子棋游戏。代码中的逻辑相对简单,但可以作为一个基础框架,你可以根据自己的需求扩展和改进游戏规则、增加AI玩家等功能。希望这个示例能帮助你更好地理解C语言和游戏开发的基本概念。