「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战」
扫雷
还是那个熟悉的味道,优化的扫雷,无限接近真正的扫雷。
test.c
还是从main入手,本人不太喜欢直接上代码,感觉那样的话博友会看不懂,我喜欢分开来讲解。废话不多说,直接上代码(哈哈开个玩笑)。
main
1 | int复制代码{ |
Meun菜单函数
1 | void复制代码{ |
game游戏函数
1 | void复制代码{ |
game.c文件
InitBoard初始化棋盘函数
棋盘初始化,这里到底初始化是么样的字符呢?写死’0’,show数组不行。写死’*‘,mine数组也不行,那怎么办呢?所以我这里全都不要,我用一个参数set来承接,你要初始化什么样,你传给我的参数,然后再操作。
1 | void复制代码{ |
DisplayBoard打印棋盘参数
打印棋盘,这里打印就是我们所见的棋盘,那个为了防止数组溢出的外面一圈就不需要了。虽然我们这里虽然操作的是99的数组,但是我们传数组的时候还是1111的数组,所以用board这个11*11的数组来接收
1 | void复制代码{ |
SetMine放置雷函数
布置雷,把雷放到mine数组里面
1 | void复制代码{ |
GetMineCount得到雷数函数
得到雷个数函数,因为我们放雷数组初始化是’0’,雷是’ ‘,但我们从排查雷及其周围是定死3*3的数组,所以我们用循环把9个字符加起来再减9个’0’就能得到总共’\‘-‘0’的整数了,再除以它就可以得到count
1 | int复制代码{ |
PutOneMine放单雷函数
放一个雷,防止第一步及之后连续踩雷就被炸死,这个代码就是保护那些脸黑的,怕他们没有游戏体验
1 | void复制代码{ |
ShowSpread显示展开函数
显示展开函数,也就是递归展开排雷,这个函数大大增加了游戏的可玩性,我欲八面来风层层递归
1 | void复制代码{ |
FindBoard排查雷函数
排查雷,我们是通过排查mine数组,然后把信息传到show数组里面,我们还是操作99数组,但mine show一直都是1111的数组,为了防止查雷是溢出
1 | void复制代码{ |
game.h
宏
上面的讲解是简易棋盘9乘9的,这里我就直接来个中等难度的15乘15的
1 | #define复制代码#define COL 15 |
函数申明
1 | void复制代码 |
测试图
次数限制
炸死
第一步开始连续踩雷,泉水无敌效应坐标2 3是有雷的
但为了防止刚开始就死,看两幅图2 3雷被移走了,之后只要不是连续踩雷就不会出现这个情况
赢了
9 2是唯一一个没有雷的
本文转载自: 掘金