在学完函数及多文件分装后我们便可以用所学的知识在VS2026上写一个简单的9*9扫雷游戏下面我将手把手教你完成这个较为复杂的C语言工程Come on我的扫雷作品放在了git仓库毛毛C语言/code_small project - Gitee.com已开源建议看一看便于下面讲解。在下的最后也有代码展示目录一. 效果演示二. 整体思路三. 代码准备工作框架菜单game函数棋盘说明灵活化一. 效果演示二. 整体思路1. 文件分装text.c用于装游戏的整体框架game.c用于装游戏相关的重要函数game.h用于装 游戏相关的函数及变量的声明。2. 游戏思路搭建出整体框架——》打印菜单menu()——》玩家选择是否进入——》用数组mine和show建立棋 盘并初始化init_board()——》打印棋盘(print_board()) ——》部署地雷(put_mine())——》 排查地雷(pai_mine())并给予提示(find_mine())——》成功或死亡——》循环下一局。已标注出 相关函数及数组名。三. 代码准备工作框架因为玩家要先进入游戏菜单选择游玩后在进入循环所以先用do_while循环语句搭建出整体框架int main() { int input 0; do { menu(); scanf(%d, input); switch (input) { case 1: { game(); break; } case 0: { printf(退出\n); break; } default: { printf(输入错误\n); break; } } } while (input); return 0; }菜单注意玩家输入1为开始0为退出其他数字为输入错误需重新输入。所以input非零可作为循环标志。menu()作为菜单打印函数单独分装在main函数上面printf函数的头文件在game.h中void menu() { printf(------------------------\n); printf(------ 1-开始 ------\n); printf(------ 0-退出 ------\n); printf(------------------------\n); printf(请选择); }game函数game()作为游戏主体函数在game()中还有其他分工明确的子函数他们是按照游戏思路进行排序void game() { //引入棋盘数组 char mine[11][11] { 0 }; char show[11][11] { 0 }; //初始化 init_board(mine, 11, 11, 0); init_board(show, 11, 11, *); //打印 print_board(show, 11, 11); //部署雷 put_mine(mine, 11, 11); //排雷 pai_mine(mine, show, 11, 11); }这些子函数都是我们提前规划好各自作用的要在game.c中实现下一篇讲解并在game.h下面演示中声明//初始化 void init_board(int arr[11][11], int r, int c, char in); //打印 void print_board(char arr[ROWS][COLS], int r, int c); //部雷 void put_mine(char mine[ROWS][COLS], int r, int c); //排雷 void pai_mine(mine, show, r, c);棋盘说明在game中棋盘数组有两个mine是内部部署地雷棋盘用于判断玩家排雷状态show是外部显示棋盘用于打印在显示屏上给玩家判断。这时细心的同学就发现我们要做9*9扫雷游戏但两个数组均为11*11的。是我写错了吗当然不是这是因为在9*9的数组中当玩家排查地雷时游戏需要判断周围8格地雷个数当在边缘时数组访问可能会越界所以用11*11的数组更加方便判断下面有配图灵活化这时为了让期盼类型更加灵活可以将棋盘相关参数转变为变量行ROWS列COLS效果如下void game() { //棋盘数组 char mine[ROWS][COLS] { 0 }; char show[ROWS][COLS] { 0 }; //初始化 init_board(mine, ROWS, COLS, 0); init_board(show, ROWS, COLS, *); //打印 print_board(show, ROWS, COLS); //部署雷 put_mine(mine, ROWS, COLS); //排雷 pai_mine(mine, show, ROWS, COLS); }这些相关变量在game.h中进行声名#define ROW 9//行 #define COL 9//列 #define ROWS ROW2 #define COLS COL2ROW和COL分别表示游戏区域的行和列ROWS和COLS表示整个棋盘行和列因为后者要比前者大一圈所以ROWSROW2COLSCOL2。好了以上是准备工作下一篇博客我将对game函数中的子函数进行逐一讲解敬请期待