C语言--实现扫雷游戏

1.编写思路

      写任何代码都需要有思路再写,首先,做一个界面,设定一下你要做多大的棋盘,再进行初始化,然后,打印棋盘,布置雷,再排查雷,大概思路就是这样,接下来就是具体的过程。

2.前期铺垫

2.1主菜单

    首先,我们先要做一个主菜单,来实现游戏的进入(利用do while循环)。

    编写出来就是这样:

    这里我利用了menu函数和game函数,这样看起来会更加方便,也利于操作。

2.2创建文件

    再主文件(test.c)的基础上分别创建game.h(头文件)和game.c(源文件)主要作用就是方便声明和定义,也方便了内容的查找。

注意:1.当有两个源文件都要使用的内容,就可以写在头文件里。

            2..在两个源文件里包含一下头文件,这样就可以直接使用头文件中的内容了。

2.3定义行、列、雷的个数

    通过define定义行、列、雷的个数,就可以在整个程序中使用了,一劳永逸。

 2.4函数声明

2.5game函数

    首先在test.c文件中定义geme函数,再在函数中定义所有声明的函数,方便在game.c文件中使用。

    game()函数中包含了埋雷的数组和展示的数组(这两个数组大小是一样的,分开写这样就不会混淆了),以及初始化棋盘函数、显示棋盘函数、布置雷函数、排查雷函数的调用,这些函数在下面我们展开来分析。

3.游戏功能的实现

3.1棋盘的创建

    mine棋盘:存储布雷的信息。(不给玩家显示)

    show棋盘:玩家游戏的棋盘。(给玩家显示)

   相信这里会有小朋友有疑问了,创建的是9*9的棋盘,为什么还要设置11*11的棋盘?

   因为在正常情况下我们在排查雷的过程中是需要排查这个雷附近的八个格子的,假如就只是9*9的棋盘在边缘去排查附近的格子,无法排查到附近的八个格子,就会出现越界访问,游戏就无法正常运行下去,所以要多设置一个11*11的棋盘,以便边缘格子的访问。

3.2初始化棋盘

    定义InitBorad()函数,代码实现:

    

    首先,我们要对棋盘进行初始化以便于棋盘能正常的运行下去,这里将没雷的格子定义为‘0’,有雷的格子定义为‘1’。

3.3打印棋盘

    定义DisplayBoard函数,代码实现:

    

4.4布置雷

     定义SetMine函数,代码实现:

    代码细节:

     这里为了实现放置雷的随机性利用了rand函数已达到效果,当然我们摆放了雷数量是有限的,所以在确保这个位置没有雷的的情况下放置雷,然后进行count--。

4.5排查雷

    定义FindMine函数,代码实现:

    代码解析:

           在正确输入坐标的情况下,如果你踩到雷就会显示“很遗憾,你别炸死了”然后打印出放置雷的棋盘,如果你没踩到雷,就会显示你附近雷的个数,这里的显示累的个数利用了GetMineCount函数,我们来看一下内容:

             我们可以看到这是对该坐标周围的 8 个坐标的字符加起来的,我们知道字符 '1' 和字符 '0' 对应的ASCII码值是相连的,因此我们将周围 8 个的字符加起来减去 8 个字符 '0' ,这样我们就可以得到字符 '1' 的个数,也就是雷的个数。

    如果我们一步都没有失误,直到整个雷全部排完,就会执行以下代码:

排雷成功后,我们会再次对雷的布局图进行打印。我们为了方便展示,布置 80 个雷测试一下。

效果展示:

4.总结

      以上就是全部内容,可能还是会有需要改进的地方,希望看到这篇内容的朋友多多提意见,点个赞,谢谢!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值