首先我们在制作游戏前要先分析游戏和列出游戏的设计框架
一.游戏分析和设计
1.文件分类
我们想去个好的管理好整个游戏就要将游戏分成几个文件去编写不至于在寻找错误时仅在一个文件中不方便
那么扫雷游戏需要三个文件
game.h 用来放头文件和函数的声明
game.c 用来放置函数
test.c 游戏的基本逻辑
2.游戏分析
首先我们要知道游戏的规则和玩法
简单总结来说:
1.游戏是一个有n×n的正方形
2.每次点击会以自身为九宫格显示周围区域所有雷的个数
3.当玩家扫到所有雷时游戏胜利踩到雷则游戏失败
今天我们来制作的就是一个9×9的扫雷游戏,但是不要将所有的数据定义死,方便后续修改游戏
棋盘分析
那么既然是9×9的方格,首先我们就要想到数组而且是二维数组
但你访问时,可能会出现访问越界的情况,那我们我们就想着把数组扩大一圈来防止越界
然后玩家的棋盘上要有“*”,那么我们就要想着两个棋盘,其中一个给玩家看,另一个则是用来生成雷的
雷的分析
然后就是雷的样式,这里我们可以将雷设置为1非雷就是0,为什么呢我们后面就讲
二.游戏的实现
1.初始化游戏
首先是菜单的打印,很简单就不多说了
然后就要开始生成棋盘了,简单的循环打印,就不多描述了,如果大家不会我可以单独写一篇关于数组循环打印的文章
但这里注意,为了方便我们后续优化游戏或更改数字,不要将数组直接传入数字可以用头文件先来定义大小,再来传入数字
第一个函数 初始化棋盘
这里我们为了能够优化游戏和方便就可以将“0”和“*”放到字符中传到一个函数过来也就是这里的set
第二个函数 打印棋盘
这里是游戏的美化,我这里为了方便查找在上面和左侧打了数字,可以自行发挥
原理就是上面直接循环打印,左侧则先是打印一个数字,然后再将j放到循环中打印剩下的*,然后换行再打一个数字再打*
2.放置雷
这里也是一样优先使用定义的方法,不要直接设置雷的个数
用到随机,我们就要想到用到srand函数和时间戳来配合生成真正的随机数
但是生成的随机数并不是在我们棋盘的范围内。此时我们可以用生成的随机数摸上我们棋盘长度,得到的就是棋盘的边长减一,再加上一就是能随机到所有数了
那么我们就能将雷放到玩家看不到的棋盘上了
3.判断雷周围的个数
如果此时你将雷设为1那么很简单,旁边周围的坐标所有相加就是雷的个数,那你要注意此时的是字符类型,如果你想将它返回为int类型,那么就需要减去字符零的ASCLL值
4.扫雷
首先这个函数要将所有的数组和棋盘长度导入,然后根据循环和分支将不同条件的判断情况写出来
游戏源码
game.h
game.c
test.c
总之游戏的代码还是比较长的,有些代码地方写错很不容易发现,但是可以通过调试的方式将错误的地方慢慢找出来,大家自己将游戏的难度和其他方面做做升级,加油