介绍
这篇文章主要介绍了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语言怎样实现简单扫雷游戏