| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> C语言简单实现扫雷 -> 正文阅读 |
|
[数据结构与算法]C语言简单实现扫雷 |
首先还是先来看一下效果 棋盘中的格子用“*”表示,字符1表示地雷,玩家输入坐标,如果是地雷,提示玩家失败并显示地雷在格子的分布,如果不是地雷,此格显示数字,数字表示周围的地雷的个数 同井字棋游戏一样,扫雷依旧是分三个文件game.h声明函数,game.c实现函数功能,test.c测试 目录 1.创建开始菜单逻辑和上一篇的井字棋相同便不再过多阐述,代码如下:
?我们的重点依旧是game函数的实现 2.打印棋盘2.1建立棋盘棋盘依旧是用二维数组来建立,但在初始化棋盘之前我们需要思考要建立多大的棋盘 游戏中的棋盘大小为10*10的大小,那么char board[10][10]? 但这个大小在后续函数功能实现的时候会很麻烦,如图: ?如果边界处的坐标元素不是地雷,那么它就要显示周围的地雷的个数,函数会访问周围8个坐标元素,但显然边界周围的元素不足8个,这就会造成越界访问,那么函数就要添加判断条件坐标是否处于边界,处于边界后又是不是处于四个角落中,这样工作量又增加了 索性在建立棋盘的时候在实际棋盘大小周围再加一圈大小,即12*12。在使用时只使用中间的棋盘,这样写函数时也就不需要写过多的判断条件了 在建立棋盘的时候创建两个数组mine和show,功能如下: ?代码:
2.2棋盘初始化创建函数init,棋盘mine初始化成字符“0”,show初始化成“*”,那函数返回值类型应该为char,参数有数组名、行数、列数以及想要设置的字符,实现逻辑依旧是嵌套的for循环
2.3放地雷创建函数set_mine,需要确定放置地雷的个数,且地雷都需要放置mine中心的10*10大小内,地雷的位置需随机放置
因为地雷位置需随机放置,那么就又要使用rand(),在使用之前依旧是要设置srand()
2.4打印棋盘需要打印的是数组show中间的10*10大小的元素,使用时注意参数
?3.判断输赢创建函数find_mine,玩家输入坐标,如果该坐标藏有地雷,提示玩家失败,显示地雷分布后结束游戏,否则显示该坐标周围的地雷的个数,当棋盘除地雷之外的所有位置都被玩家找出来后提示玩家获胜 建立棋盘时创建了两个数组,所以find_mine参数也需要两个数组
那么在坐标元素不是地雷时如何显示周围地雷个数? 我们用“1”来表示地雷,“0”表示没有,那么周围的数字加起来就正好是地雷的个数,但“1”和“0”都是字符型数据,所以需要在后面-‘0’使其变成int型数据,之后显示时+'0'改回字符
到这扫雷的代码基本上完成了,感谢观看,完 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:29:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |