使用C语言实现三子棋小游戏
荣姿康 2023-08-09C#
前言本文将使用C语言来实现一个简单的三子棋小游戏。三子棋是一种非常经典的棋类游戏,它使用一个3x3的棋盘,并由两个玩家轮流下子。游戏的目标是在棋盘上连成一条直线的三个棋子。代码实现#include#de
前言
本文将使用C语言来实现一个简单的三子棋小游戏。三子棋是一种非常经典的棋类游戏,它使用一个3x3的棋盘,并由两个玩家轮流下子。游戏的目标是在棋盘上连成一条直线的三个棋子。
代码实现
#include#define SIZE 3 // 初始化棋盘 void initializeBoard(char board[SIZE][SIZE]) { for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { board[i][j] = ' '; } } } // 打印棋盘 void printBoard(char board[SIZE][SIZE]) { for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { printf("| %c ", board[i][j]); } printf("|\n"); } } // 判断游戏是否结束 int isGameOver(char board[SIZE][SIZE]) { // 判断行 for (int i = 0; i < SIZE; i++) { if (board[i][0] != ' ' && board[i][0] == board[i][1] && board[i][1] == board[i][2]) { return 1; } } // 判断列 for (int j = 0; j < SIZE; j++) { if (board[0][j] != ' ' && board[0][j] == board[1][j] && board[1][j] == board[2][j]) { return 1; } } // 判断对角线 if (board[0][0] != ' ' && board[0][0] == board[1][1] && board[1][1] == board[2][2]) { return 1; } if (board[0][2] != ' ' && board[0][2] == board[1][1] && board[1][1] == board[2][0]) { return 1; } // 判断是否平局 for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { if (board[i][j] == ' ') { return 0; } } } return -1; // 平局 } // 主函数 int main() { char board[SIZE][SIZE]; int row, col; int currentPlayer = 1; int gameOver = 0; initializeBoard(board); while (!gameOver) { printf("Player %d's turn:\n", currentPlayer); printf("Enter row (0-2): "); scanf("%d", &row); printf("Enter column (0-2): "); scanf("%d", &col); if (row < 0 || row >= SIZE || col < 0 || col >= SIZE || board[row][col] != ' ') { printf("Invalid move. Try again.\n"); continue; } board[row][col] = (currentPlayer == 1) ? 'X' : 'O'; printBoard(board); int result = isGameOver(board); if (result == 1) { printf("Player %d wins!\n", currentPlayer); gameOver = 1; } else if (result == -1) { printf("It's a draw!\n"); gameOver = 1; } currentPlayer = (currentPlayer == 1) ? 2 : 1; } return 0; }
代码解释和用途
上述代码实现了一个简单的三子棋小游戏。具体来说:
- initializeBoard函数用于初始化棋盘,在3x3的棋盘上所有位置都设置为空格。
- printBoard函数用于打印当前的棋盘状态。
- isGameOver函数用于判断游戏是否结束。它通过检查行、列和对角线来判断是否存在连成一条直线的三个棋子。
- 在主函数中,通过循环实现轮流下子的功能。每当一个玩家下子后,会调用printBoard函数打印当前的棋盘状态,并调用isGameOver函数判断游戏是否结束。
总结
通过以上代码的实现,我们成功地实现了一个简单的三子棋小游戏。玩家可以通过输入行和列来下子,并可以看到每个玩家的下子结果。在每次下子后,程序会判断是否有玩家连成一条直线的三个棋子,如果有,则宣布该玩家获胜;如果棋盘已满但没有任何玩家连成一条直线的三个棋子,宣布平局。
该游戏只是一个简单的实现,还可以进一步扩展和改进。例如,可以添加AI玩家,并实现更高级的游戏策略和算法。希望以上代码和解释能帮助您理解和编写自己的三子棋游戏。
很赞哦! ()