提示信息

C语言实现的三子棋游戏

视而不见 已关注

好的,下面是一个使用C语言实现的简单三子棋(井字棋)游戏代码示例。该游戏允许两个玩家在控制台轮流下棋,直到其中一方获胜或游戏平局。

  1. #include <stdio.h>
  2. #define SIZE 3
  3. void initializeBoard(char board[SIZE][SIZE]);
  4. void printBoard(char board[SIZE][SIZE]);
  5. int checkWin(char board[SIZE][SIZE]);
  6. int isBoardFull(char board[SIZE][SIZE]);
  7. int main() {
  8. char board[SIZE][SIZE];
  9. int currentPlayer = 1;
  10. int row, col;
  11. int winner = 0;
  12. initializeBoard(board);
  13. while (!winner && !isBoardFull(board)) {
  14. printBoard(board);
  15. printf("Player %d's turn. Enter row and column (1-3, space-separated): ", currentPlayer);
  16. scanf("%d %d", &row, &col);
  17. row--; // Adjust for 0-based index
  18. col--;
  19. if (row >= 0 && row < SIZE && col >= 0 && col < SIZE && board[row][col] == ' ') {
  20. board[row][col] = (currentPlayer == 1) ? 'X' : 'O';
  21. winner = checkWin(board);
  22. if (winner) {
  23. printBoard(board);
  24. printf("Player %d wins!\n", currentPlayer);
  25. } else if (isBoardFull(board)) {
  26. printBoard(board);
  27. printf("It's a draw!\n");
  28. } else {
  29. currentPlayer = (currentPlayer == 1) ? 2 : 1;
  30. }
  31. } else {
  32. printf("Invalid move. Try again.\n");
  33. }
  34. }
  35. return 0;
  36. }
  37. void initializeBoard(char board[SIZE][SIZE]) {
  38. for (int i = 0; i < SIZE; i++) {
  39. for (int j = 0; j < SIZE; j++) {
  40. board[i][j] = ' ';
  41. }
  42. }
  43. }
  44. void printBoard(char board[SIZE][SIZE]) {
  45. printf("\n");
  46. for (int i = 0; i < SIZE; i++) {
  47. for (int j = 0; j < SIZE; j++) {
  48. printf(" %c ", board[i][j]);
  49. if (j < SIZE - 1) printf("|");
  50. }
  51. printf("\n");
  52. if (i < SIZE - 1) printf("---+---+---\n");
  53. }
  54. printf("\n");
  55. }
  56. int checkWin(char board[SIZE][SIZE]) {
  57. for (int i = 0; i < SIZE; i++) {
  58. if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ')
  59. return 1;
  60. if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')
  61. return 1;
  62. }
  63. if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ')
  64. return 1;
  65. if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[0][2] != ' ')
  66. return 1;
  67. return 0;
  68. }
  69. int isBoardFull(char board[SIZE][SIZE]) {
  70. for (int i = 0; i < SIZE; i++) {
  71. for (int j = 0; j < SIZE; j++) {
  72. if (board[i][j] == ' ')
  73. return 0;
  74. }
  75. }
  76. return 1;
  77. }

说明

  1. 初始化棋盘initializeBoard 函数将棋盘初始化为空格,以表示未被占据的位置。

  2. 打印棋盘printBoard 函数在控制台中以井字棋格式显示当前棋盘状态。

  3. 检查胜利条件checkWin 函数检查是否存在获胜的三连子,无论是行、列或对角线。

  4. 检查棋盘是否满isBoardFull 函数检查棋盘是否还有空位,以判断平局。

  5. 主逻辑:使用while循环,实现玩家轮流输入行列,放置棋子并检查胜利或平局情况。

你可以复制这段代码,在你的编译器中运行,并根据需要进行调整和扩展。希望这对你有帮助!

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
视而不见 关注 已关注

最近一次登录:2024-11-20 15:45:02   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图