[C] c语言五子棋经典游戏源代码 →→→→→进入此内容的聊天室

来自 Sweet Pudu, 2024-03-07, 写在 C, 查看 16 次.
URL http://www.code666.cn/view/8c4fe4eb
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define MAX_ROW 3
  3. #define MAX_COL 3
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7. void init(char chessBoard[MAX_ROW][MAX_COL]) {
  8.         for (int row = 0; row < MAX_ROW; row++) {
  9.                 for (int col = 0; col < MAX_COL; col++) {
  10.                         chessBoard[row][col] = ' ';
  11.                 }
  12.         }
  13. }
  14. void print_chessBoard(char chessBoard[MAX_ROW][MAX_COL]) {
  15.         printf("+---+---+---+\n");
  16.         for (int row = 0; row < MAX_ROW; row++) {
  17.                 printf("| %c | %c | %c |\n", chessBoard[row][0],
  18.                         chessBoard[row][1], chessBoard[row][2]);
  19.                 printf("+---+---+---+\n");
  20.         }
  21. }
  22. void playerMove(char chessBoard[MAX_ROW][MAX_COL]) {
  23.         while (1) {
  24.                 int row = 0;
  25.                 int col = 0;
  26.                 printf("请输入坐标(row col):");
  27.                 scanf("%d %d", &row, &col);
  28.                 if (row < 0 || row >= MAX_ROW || col < 0 || col >= MAX_COL) {
  29.                         printf("您的坐标不在合法范围内 [0, 2],请重新输入:\n");
  30.                         continue;
  31.                 }
  32.                 if (chessBoard[row][col] != ' ') {
  33.                         printf("您的坐标位置已经有子了!\n");
  34.                         continue;
  35.                 }
  36.                 chessBoard[row][col] = 'x';
  37.                 break;
  38.         }
  39. }
  40. void computerMove(char chessBoard[MAX_ROW][MAX_COL]) {
  41.         while (1) {
  42.                 int row = rand() % MAX_ROW;
  43.                 int col = rand() % MAX_COL;
  44.                 if (chessBoard[row][col] != ' ') {
  45.                         continue;
  46.                 }
  47.                 chessBoard[row][col] = 'o';
  48.                 break;
  49.         }
  50. }
  51. int isFull(char chessBoard[MAX_ROW][MAX_COL]) {
  52.         for (int row = 0; row < MAX_ROW; row++) {
  53.                 for (int col = 0; col < MAX_COL; col++) {
  54.                         if (chessBoard[row][col] == ' ') {
  55.                                 return 0;
  56.                         }
  57.  
  58.                 }
  59.         }
  60.         return 1;
  61. }
  62. char isWin(char chessBoard[MAX_ROW][MAX_COL]) {
  63.         for (int row = 0; row < MAX_ROW; row++) {
  64.                 if (chessBoard[row][0] != ' '
  65.                         && chessBoard[row][0] == chessBoard[row][1]
  66.                         && chessBoard[row][0] == chessBoard[row][2]) {
  67.                         return chessBoard[row][0];
  68.                 }
  69.         }
  70.         for (int col = 0; col < MAX_COL; col++) {
  71.                 if (chessBoard[0][col] != ' '
  72.                         && chessBoard[0][col] == chessBoard[1][col]
  73.                         && chessBoard[0][col] == chessBoard[2][col]) {
  74.                         return chessBoard[0][col];
  75.                 }
  76.         }
  77.         if (chessBoard[0][0] != ' '
  78.                 && chessBoard[0][0] == chessBoard[1][1]
  79.                 && chessBoard[0][0] == chessBoard[2][2]) {
  80.                 return chessBoard[0][0];
  81.         }
  82.         if (chessBoard[2][0] != ' '
  83.                 && chessBoard[2][0] == chessBoard[1][1]
  84.                 && chessBoard[2][0] == chessBoard[0][2]) {
  85.                 return chessBoard[2][0];
  86.         }
  87.         if (isFull(chessBoard)) {
  88.                 return 'q';
  89.         }
  90.         return ' ';
  91. }
  92. void game() {
  93.         char chessBoard[MAX_ROW][MAX_COL] = { 0 };
  94.         init(chessBoard);
  95.         char winner = ' ';
  96.         while (1) {
  97.                 system("cls");
  98.                 print_chessBoard(chessBoard);
  99.                 playerMove(chessBoard);
  100.                 winner = isWin(chessBoard);
  101.                 if (winner != ' ') {
  102.                         break;
  103.                 }
  104.                 computerMove(chessBoard);
  105.                 winner = isWin(chessBoard);
  106.                 if (winner != ' ') {
  107.                         break;
  108.                 }
  109.         }
  110.         print_chessBoard(chessBoard);
  111.         if (winner == 'x') {
  112.                 printf("恭喜您, 您赢了!\n");
  113.         }
  114.         else if (winner == 'o') {
  115.                 printf("哈哈,您连人工智障都下不过!\n");
  116.         }
  117.         else {
  118.                 printf("您只能和人工智障打平手!!\n");
  119.         }
  120. }
  121.  
  122. int menu() {
  123.         printf("--------------------------\n");
  124.         printf("--------1.开始游戏--------\n");
  125.         printf("--------0.退出游戏--------\n");
  126.         printf("--------------------------\n");
  127.         int choice = 0;
  128.         printf("请输入你的选择:");
  129.         scanf("%d", &choice);
  130.         return choice;
  131. }
  132. int main()
  133. {
  134.         srand((unsigned int)time(0));
  135.         while (1) {
  136.                 int choice = menu();
  137.                 if (choice == 1) {
  138.                         game();
  139.                 }
  140.                 else if (choice == 0) {
  141.                         printf("退出游戏,GOODBYE!!!!!\n");
  142.                         break;
  143.                 }
  144.                 else {
  145.                         printf("输入错误!请重新输入!\n");
  146.                         continue;
  147.                 }
  148.         }
  149.         system("pause");
  150.         return 0;
  151. }

回复 "c语言五子棋经典游戏源代码"

这儿你可以回复上面这条便签

captcha