c语言扫雷小游戏源代码

  介绍

这期内容当中小编将会给大家带来有关c语言扫雷小游戏源代码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>说明:该游戏的实现需要建立三个文件

 c语言扫雷小游戏源代码

<李>

test2.c:整个游戏,开始游戏/退出游戏的大体执行流程

<李>

game2.c:具体实现扫雷游戏功能的函数定义

<李>

game.h:宏定义,函数声明,引用相关c库函数的头文件

<强> test2。c

游戏的大体执行流程

# include" game2.h"//菜单函数   void 菜单()   {   ,printf (“* * * * * * * * * * * * * * * * * * * * * * * * * * \ n");   ,printf (“* * * * * * * *, 1. play  * * * * * * * * \ n");   ,printf (“* * * * * * * *, 0. exit  * * * * * * * * \ n");   ,printf (“* * * * * * * * * * * * * * * * * * * * * * * * * * \ n");   }//游戏函数   void 游戏()   {   ,//雷的信息储存//1。雷分布的棋盘   ,char 我(行)[关口],=,{,0},//玩家不能看//2。排查雷信息的棋盘   ,char 显示(行)[关口],=,{,0},//玩家进行游戏时候的棋盘      ,//初始化棋盘   ,InitBoard(行,我还以为,关口,& # 39;0 & # 39;);   ,InitBoard(关口,,,行,,& # 39;* & # 39;);      ,//打印棋盘   ,DisplayBoard(显示,,行,上校);   ,//布置雷   ,SetMine(我的,,行,上校);      ,//扫雷   ,FindMine(我的,,,行,上校);   }      int  main ()   {   ,将srand ((unsigned  int)时间(NULL));//设置随机数的生成起点   ,int  input =, 0;   ,做   ,{   ,菜单();   ,printf(“请选择:在“);   ,scanf (“% d",,,输入);   ,switch (输入)   ,{   ,case  1:   ,游戏();   ,打破;   ,case  0:   ,printf(“退出游戏\ n");   ,打破;   ,默认值:   ,printf(“选择错误,请重新选择\ n");   ,打破;   ,}   ,}while (输入);   ,return  0;   }

<强> game2。c

具体实现扫雷游戏功能的函数定义

# include" game2.h"//我对棋盘,一开始全初始化为& # 39;0 & # 39;后面放雷的坐标位置改为& # 39;1 & # 39;//对显示棋盘,一开始全初始化为& # 39;* & # 39;后面扫雷时玩家选择的坐标位置改为周围雷的个数   void  InitBoard (char (* p)关口,,int 行,int ,上校,char 集)//设置为需要初始化的字符   {   ,int 小姐:=,0;   ,int  j =, 0;   ,for (小姐:=,0;,小姐:& lt;,行;,我+ +)   ,{   ,for  (j =, 0;, j  & lt;,坳;,j + +)   ,{   ,* (* (+ p  i), +, j),=,设置;   ,}   ,}   }      void  DisplayBoard (char (* ps)关口,,int 行,int 坳)   {   ,int 小姐:=,0;   ,int  j =, 0;   ,//打印最上面一行的数字坐标和分隔行   ,printf (“,“);   ,for (小姐:=,1,,小姐:& lt;=, 9;,我+ +)   ,{   ,printf (“% d “,我);   ,}   ,printf (“\ n");   ,printf (“,“);   ,for (小姐:=,1,,小姐:& lt;=, 9;,我+ +)   ,{   ,printf (“-”);   ,}   ,printf (“\ n");   ,//打印最左边的数字坐标和分隔行以及相应的棋盘内容   ,for (小姐:=,1,,小姐:& lt;=,行;,我+ +)   ,{   ,printf (“% d  |“,, i);=,for  (j  1;, j  & lt;=,坳;,j + +)   ,{   ,printf (“% c “,, * (* (+ ps  i), +, j));   ,}   ,printf (“\ n");   ,}   }      下午void  SetMine (char(*)(关口),int 行,int 坳)   {   ,int  count =, MAX_MINE;//数记录需要放的雷的个数   ,while (计数)   ,{   ,int  x =, rand (), %, row  +, 1;//1 - 9的数字   ,int  y =, rand (), %, col  +, 1;//1 - 9的数字   ,//判断随机生成坐标是已经放雷   ,if  (* (* (+ pm  x), +, y),==, & # 39; 0 & # 39;)   ,{   ,* (* (pm  +, x), +, y),=, & # 39; 1 & # 39;;   ,计数,   ,}   ,}   }//把坐标周围8个位置的字符相加再减去8,*,& # 39;0 & # 39;ASCLL编码的差值就是周围雷的个数   下午static  int  Find_Mine_Count (char(*)关口,,int  x,, int  y)   {   ,返回   ,(*(*(+点+ x  1),安康;1 + y), +   ,*(*(+点+ x  1) + y), +   ,*(*(+点+ x  1), +, 1 + y), +   ,* (* (pm + x)安康;1 + y), +   ,* (* (pm + x) + 1 + y), +   ,* (* (pm + x 作用;1),安康;1 + y), +   ,* (* (pm + x 作用;1)+ y), +   ,* (* (pm + x 作用;1),+,1 + y)),安康;8,*,& # 39;0 & # 39;;   }      下午void  FindMine (char(*)(关口),char (* ps)关口,,int 行,int 坳)   {   ,int  x =, 0;   ,int  y =, 0;   ,int  win =, 0;   ,while  (win  & lt;,行* col 作用;MAX_MINE)//当所有非雷位置都被确认时,赢得=行* col 作用;MAX_MINE   ,{   ,printf(“请输入坐标(用空格分隔):在“);   ,scanf (“% d % d",,, x,, y);//1。判断输入坐标是否正确   ,if  (x 祝辞=,1,,,,x  & lt;=, row ,,, y 祝辞=,1,,,,y  & lt;=,上校)//坐标正确的情况   ,{//2。判断输入坐标是否重复   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

c语言扫雷小游戏源代码