想必大家肯定都玩过扫雷游戏,作为风靡全球简单易上手的小游戏,规则也很简单,那么你是否有想了解扫雷游戏的底层代码和逻辑的想法呢?今天就由笔者来为大家演示如何使用C语言实现简易的扫雷游戏。
代码的主体部分将分开实现。分为三个文件1.test.c,2.game.c,3.game.h(分开的目的是便于多人协作,而且不容易乱)。test.c中我们进行代码的测试的逻辑演示,在game.h中我们进行函数的声明和定义相关的数据。在game.c中我们进行函数的实现。如下图所示:
我们都知道,扫雷游戏是一个二维的游戏,所以我们可以使用C语言中的二维数组来布置最基础的雷的布局,我们用'1'表示雷'0'表示非雷。在布置雷之前我们应该先简单写一下代码设置菜单。
我们定义一个menu( )函数,如图:
在main()函数中我们进行代码测试定义test( )函数并且在test( )中应该包含menu( )
在test( )中我们运用了do while 循环和switch( )选择语句根据不同的选择进行不同的模式,目前为止,这些都只是和菜单相关,接下来我们具体分析如何实现game( )函数这里的ROWS ,COLS 都是在game.h中定义的相关参数(这样做的目的是方便修改,只用改game.h中对应的值就可以了)我们用9*9的雷区演示,而实际上我们却还要定义11*11原因是当我们选择雷区最外周的雷区排查的时候,要统计的是雷的一周所以用的是11*11,但是实际操作的只是9*9。
我们将会定义两个数组mine[ ][ ],show[ ][ ]数组。mine用来设置雷,show用来展示排查后的信息。
在mine和show中我们先进行初始化定义InitBoard( )函数
此函数先在game.h中先声明后在game.c中具体实现(以下函数相同)
传入不同的参数进行初始化:
接下来我们定义DisplayBoard()用来展示雷区
其实就是通过循环打印9*9雷区,但是这样不太方便查看坐标,所以添加了坐标
接下来就应该在mine数组中布置指定的雷,这里将EASY_COUNT定义为十个雷,因为雷是随机的,所以要使用rand()函数生成随机数,应在先调用srand((unsighed)time(NULL))
得到随机的雷区后,接下来我们就应该排查雷,在mine数组中排查然后显示到show数组中
这样我们就能完成了一个简易的扫雷游戏