• 售前

  • 售后

热门帖子
入门百科

【C语言01】用二维数组实现最简单的三子棋游戏

[复制链接]
我就是但丁徊 显示全部楼层 发表于 2022-1-12 23:31:22 |阅读模式 打印 上一主题 下一主题

目录




一、打印菜单

设计好游戏菜单
  1. //打印菜单的函数
  2. void menu()
  3. {
  4.         printf("************************\n");
  5.         printf("******   1.play   ******\n");
  6.         printf("******   0.exit   ******\n");
  7.         printf("************************\n");
  8. }
  9. int main()
  10. {
  11.         int input = 0;
  12.         srand((unsigned int)time(NULL));
  13.         do
  14.         {
  15.                 menu();   //打印菜单
  16.                 printf("请选择:>");
  17.                 scanf("%d", &input);
  18.                 switch (input)
  19.                 {
  20.                 case 1:
  21.                         printf("玩游戏\n");
  22.                         game();   //玩游戏的函数
  23.                         break;
  24.                 case 0:
  25.                         printf("退出游戏\n");
  26.                         break;
  27.                 default:
  28.                         printf("输入有误,请重新输入:");
  29.                         break;
  30.                 }
  31.         } while (input);
  32. }
复制代码
二、game函数的实现

1.函数声明和头文件

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define ROW 3
  5. #define COL 3
  6. void game();
  7. //初始化棋盘
  8. void Init_board(char board[ROW][COL], int row, int col);
  9. //打印棋盘
  10. void print_board(char board[ROW][COL],int row, int col);
  11. //玩家下棋
  12. void player_move(char board[ROW][COL], int row, int col);
  13. //电脑下棋
  14. void computer_move(char board[ROW][COL], int row, int col);
  15. //判断输赢
  16. char is_win(char board[ROW][COL], int row, int col);
  17. //判断棋盘是否满
  18. char is_full(char board[ROW][COL], int row, int col);
复制代码
2.game()主体

  1. void game()
  2. {
  3.         //创建 棋盘数组
  4.         char board[ROW][COL] = { 0 };
  5.         //初始化棋盘
  6.         Init_board(board, ROW, COL);
  7.         //打印棋盘
  8.         print_board(board, ROW, COL);
  9.         //开始下棋
  10.         char win = '0';  //用来获取游戏的状态
  11.         while (1)
  12.         {
  13.                 //玩家下
  14.                 player_move(board, ROW, COL);
  15.                 //判断输赢  玩家赢返回*   电脑赢返回#   平局返回Q  继续返回C
  16.                 win = is_win(board, ROW, COL);
  17.                 if ('C' != win )
  18.                 {
  19.                         break;
  20.                 }
  21.                 //电脑下
  22.                 computer_move(board, ROW, COL);
  23.                 win = is_win(board, ROW, COL);
  24.                 if ('C' != win)
  25.                 {
  26.                         break;
  27.                 }
  28.         }
  29.         if ('*' == win)
  30.         {
  31.                 printf("恭喜你获胜!\n");
  32.         }
  33.         else if ('#' == win)
  34.         {
  35.                 printf("很遗憾,你输了!\n");
  36.         }
  37.         else
  38.         {
  39.                 printf("平局!\n");
  40.         }
  41.        
  42. }
复制代码
3.game()函数里需要用到的函数

[code]void Init_board(char board[ROW][COL], int row, int col){        int i = 0;        int j = 0;        for (i = 0; i < row; i++)        {                for (j = 0; j < col; j++)                {                        board[j] = ' ';                }        }}void print_board(char board[ROW][COL], int row, int col){        int i = 0;        int j = 0;        for (i = 0; i < row; i++)        {                for (j = 0; j < col; j++)                {                        printf(" %c ", board[j]);                        if (j < col - 1)                        {                                printf("|");                        }                }                printf("\n");                if (i < row - 1)                {                        int j = 0;                        for (j = 0; j < col; j++)                        {                                printf("---");                                if (j < col - 1)                                {                                        printf("|");                                }                        }                }                printf("\n");        }}void player_move(char board[ROW][COL], int row, int col){        while (1)        {                int x = 0;                int y = 0;                printf("玩家下,输入坐标:");                scanf("%d %d", &x, &y);                if (x >= 1 && x = 1 && y

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作