C语言怎样实现简单扫雷游戏

  介绍

这篇文章主要介绍了C语言怎样实现简单扫雷游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

具体内容如下

<强>步骤

1。首先打印游戏选择菜单
2。地图及初始化
1),展示给玩家的地图(show_map)
2),地雷的图(mine_map可知地雷的位置)
3。打印地图
4。用户输入坐标,并检查坐标的合理性
5。判断当前位置是否有地雷,没有则出现数字(表示周围格子中有几个地雷)
6。打印新的地图
7。重复3 ~ 6步骤,直到踩雷游戏结束,或胜利。
8重新继续游戏或退出!

<强>代码

主函数及游戏选择菜单

# include   # include   # include   ,   # define  ROW  9   # define  COL  9   10 # define  COUNT //地雷个数   ,   int 菜单()   {   ,printf (“* * * * * * * * * * * * * * * * * * * * * * * * * \ n");   ,printf (“* * * * * *, 1. play  * * * * * * \ n");   ,printf (“* * * * * *, 0. exit  * * * * * * \ n");   ,printf (“* * * * * * * * * * * * * * * * * * * * * * * * * \ n");   ,printf(“请选择:在“);   ,int  choice =, 0;   ,scanf (“% d",,,选择);   ,return 选择;   }   ,   int  main ()   {   ,int  choice =, 0;   ,将srand ((unsigned  int)时间(NULL));   ,while  (1)   ,{=,choice 菜单();   ,if  (choice ==, 1)   ,{   ,游戏();   ,}   ,else  if  (choice ==, 0)   ,{   ,printf(“再见! \ n");   ,打破;   ,}   其他的,   ,{   ,printf(“输入有误,请重新输入! \ n");   ,}   ,}   ,   ,系统(“pause");   ,return  0;   }

~进入游戏

1。创建两个二维数组;2。对两个二维数组进行初始化;3。打印地图;4。让用户输入一组坐标;5。判定是否踩雷;6。判断游戏是否胜利;7。更新地图,把当前位置变成一个数字(数字为周围格子里地雷个数)

void 游戏()   {//1。创建两个二维数组   (行),char  show_map (COL);   (行),char  mine_map (COL);//2。对两个二维数组进行初始化   ,Init (show_map, mine_map),,   ,int  blank_count =, 0;   ,while  (1)   ,{   ,PrintMap (mine_map);//为了方便调试,临时打印mine_map   ,printf (“\ n");   ,//3。打印地图   ,PrintMap (show_map);//4。让用户输入一组坐标   ,printf(“请输入坐标:在“);   ,int 小姐:=,0;   ,int  j =, 0;   ,scanf (“% d  % d",,,我,,,j);   ,if (小姐:& lt;, 0, | |,小姐:祝辞=,ROW  | |, j  & lt;, 0, | |, j 祝辞=,上校)   ,{   ,printf(“输入有误,请重新输入! \ n");   ,继续;   ,}   ,if  (show_map[我][j], !=, & # 39; * & # 39;)   ,{   ,//这个位置已经被翻开   ,printf(“输入的位置已被翻开,请重新输入! \ n");   ,继续;   ,}//5。判定是否踩雷   ,if  (mine_map[我][j],==, & # 39; 1 & # 39;)   ,{   ,//踩雷了,提示游戏结束   ,PrintMap (mine_map);   ,printf(“游戏结束! \ n");   ,打破;   ,}   ,blank_count + +;//6。游戏是否胜利   ,if  (blank_count ==, ROW  *, COL 作用;计数)   ,{   ,printf(“恭喜你,扫雷成功! \ n");   ,打破;   ,}//7。更新地图,把当前位置变成一个数字   ,UpdateShowMa (show_map, mine_map,, i, j);   ,}   }

初始化地图

void  Init (char  show_map(行)(COL), char  mine_map(行)(COL))   {   ,//1. show_map 全部初始化为,*   ,for  (int 小姐:=,0;,小姐:& lt;,行;,我+ +)   ,{   ,for  (int  j =, 0;, j  & lt;,坳;,j + +)   ,{   ,show_map[我][j],=, & # 39; * & # 39;;   ,}   ,}   ,//2. mine_map初始化   ,for  (int 小姐:=,0;,小姐:& lt;,行;,我+ +)   ,{   ,for  (int  j =, 0;, j  & lt;,坳;,j + +)   ,{   ,mine_map[我][j],=, & # 39; 0 & # 39;;   ,}   ,}//3。随机生成10个位置作为地雷   ,int  mine_count =,计数;   ,while  (mine_count 祝辞,0)   ,{   ,//生成随机坐标   ,int 小姐:=,rand(), %,行;   ,int  j =, rand(), %,上校;   ,if  (mine_map[我][j],==, & # 39; 1 & # 39;)   ,{   ,继续;   ,}   ,mine_map[我][j],=, & # 39; 1 & # 39;;   ,——mine_count;   ,}   }

C语言怎样实现简单扫雷游戏