C语言:扫雷游戏讲解

目录

讲解扫雷的界面

创建二维数组棋盘

初始化扫雷棋盘

打印棋盘函数

布置雷

排查雷


讲解扫雷的界面

刚开始我们需要用函数dacd打印游戏的菜单,do-while循环输入1开始游戏,输入0的话while表达式为假循环结束,


srand((unsinged  int)time(NULL))

srand是随机数的种子,种子变化随机函数才会变化

time是时间的函数,也被称为时间戳,时间每一秒毫秒都再变化,从而达到srand种子也在变化。这个作用是随机生成10个坐标的雷,后面会讲

基础的扫雷是一个9*9的格子,我们需要2个棋盘,0的棋盘用来放雷,雷的布置为1,* 的棋盘用来给用户猜,

9*9的棋盘如果选择边边会导致越界访问,所以我们需要11*11的棋盘

创建二维数组棋盘

我们要创建一个hs.h头文件用来定义常量,还有函数的声明

在头文件

定义2个 11 的常量,用来定义二维数组

然后定义2个 9 的常量用来打印9*9的棋盘

创建字符类型 11*11 的底层棋盘,还有 11*11 用户用棋盘排查棋盘

初始化扫雷棋盘

用函数对这2个二维数组进行初始化,底层棋盘初始化为0,用户用的棋盘初始化为

我们要初始化11*11的数组所以要把常量的11传过来,我们要初始化二维数组要用到2个for循环,参数后面那个0是字符0,我们就需要传过来进行赋值,另一个棋盘也一样,只要把后面的0改成*传过来进行赋值就行了

接下来进行打印扫雷的棋盘,这是给用户看的所以我们要打印排查界面的二维数组

还有用户玩的是9*9 的棋盘所以我们需要把9*9的常量传过去

打印棋盘函数

第一个for循环我们需要打印上面的坐标方便用户输入坐标进行排查


左边的坐标我们只需要在打印一行时候,在前面打印行的数字就行

打印我们需要用字符进行打印。


布置雷

布置雷我们需要传底层棋盘,我们需要在9*9棋盘内布置雷,所以我们传9的常量


当然我们布置需要用rand随机数进行随机布置,随机数种子在讲解扫雷界面有介绍,上面是它们的头文件


把雷的10个数量赋值给sl,循环布置10个雷,布置完表达式为0了循环结束

随机生成1到9的随机数赋值给x和y,  if进行判断这个坐标有没有雷,有雷的话不布置雷,没有雷

赋值字符1给这个坐标,sl减减


排查雷

 

排雷函数我们需要把2个棋盘传过去,xs和xs2是常量9,它们是用来判断用户输入的数字有没有在1到9的范围内

如果输入2 2坐标,周围有2个雷所以要传2个棋盘,因为计算出周围有2个雷了,所以要把

字符 2 赋值2 2坐标的位置, 然后打印右边这个棋盘,左边这个棋盘是用来计算周围有多少个雷的。


pcsl是用来计算次数的,排查一次pcsl减减

9*9=81,减去雷的数量剩下71次,71次排查都没有排查到雷那么游戏就赢了


这个if是判断用户输入的数字有没有在1到9之间,如果超出范围就显示  输入错误


这个if 判断这个坐标有没有雷 ,没有雷往下执行else语句 ,  有雷的话游戏结束,打印底层棋盘给用户看所有雷的位置,break结束循环


这个zd(arr , x , y)是用来计算周围有多少个雷的,arr是底层棋盘,x和y是输入的坐标


把周围8个坐标加起来,再减去8个字符0,就得到周围有多少个雷了,看看下面

在ASCII码表,字符0是48,字符1是49,我们可以发现字符0加1,就可以得到字符1,

周围有8个坐标也就是8个字符,8个字符如果都是0那么加起来就是384,如果说8个字符里有2个字符1,那么加起来就是386,   

那么386减384等于2,也就相当于周围有2个雷,当然我们需要把2变成字符

我们只需要加上字符0,也就是48+2等于50

那么50就是字符2,把字符2赋值到排查棋盘,就可以了


zd这个函数,返回 2,2+上字符0得到字符2,arr2是排查棋盘,把字符2赋值给排查棋盘排查的坐标,

day是打印函数,把排查棋盘传过去打印就可以了

  • 38
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值