C语言实现简易扫雷

设定一个9x9的棋盘其中包含十个地雷,每次玩家选了一个位置之后那个坐标会返回一个整型数字,代表周围八个坐标内地雷的数量;如果选的为地雷则游戏失败;如果选完了除了地雷所在的坐标,则玩家获胜

首先,需要三个文件

1.game.h 实现大部分函数的声明以及引用的其他的头文件

2.game,c 游戏各种逻辑函数的定义

3.test.c 主函数以及游戏的测试

我的思路是这样的,想让主函数看起来更简洁一些,所以创建一个test()函数,把所有测试都放在内

下一步,设定几种情况:

如果玩家选1则开始游戏

如果玩家选0则退出游戏

如果玩家选了其他选项则输出“选择错误”然后让玩家重新选择

这里可以使用switch()语句:

 

这里,我们需要一个菜单放在前面,提示玩家选择

由于需要考虑到玩家可能输入错误或者玩不止一盘所以整体需要放在一个do while()循环中

 此刻,我们需要两个棋盘一个用来布置雷的信息,一个用来放排查出来的信息。简单的来说,一个棋盘在后台放地雷,制作者可以看出地雷在哪里。这样调试以及运行逻辑都会更加简洁一些,另一个棋盘则为给玩家看的棋盘。

我们把这两个数组先存放在game()函数里,game函数用来实现各种逻辑

接着,思考一个坐标旁边有几个地雷数的逻辑:

由于是9x9的棋盘,但如果玩家输入的坐标再边上(比如1,1),旁边的坐标也应该计算在内

所以在后台写游戏逻辑时需要使用11x11的棋盘

首先需要初始化棋盘

先在game.声明

接着,在game.c写逻辑

接下来,需要打印棋盘让玩家看到,原理同上

 

 有一点不同的是,需要打印坐标在旁边,让玩家更加容易的输入坐标

 这样一来玩家可以轻易的知道想选的目标坐标在第几行第几列

下一步,需要布置雷在棋盘中

假设布置十个雷在9x9的棋盘中

然后在game.h中声明

接着,在game.c中定义

 

 由于十个地雷都是随机摆放的,所以我们需要生成两个随机数,并把它们带入到棋盘上的x和y坐标

我们还需要在test()中声明一下

 接着,每生成一个随机数就把该坐标中的0换成1

最后,我们需要写游戏里的最后一个主逻辑--排雷

先在game.h中声明

接着,在game.c中定义

如果剩下的行和列相乘,剩下所有没选的坐标总数相加小于地雷数,说明游戏继续

        如果该坐标 = 1,则代表踩到地雷了,玩家失败

        如果不为1,则使用get_mine_count()函数计算周围的地雷数

        如果坐标非法,则让玩家重新输入有效坐标

如果剩下的行和列相乘,剩下所有没选的坐标总数相加等于地雷数,说明玩家已经选完了所有非地雷的坐标,玩家获胜

 

数字+字符'0'代表该数字的ASCII码值

 

 get_mine_count()函数定义

 地雷为'1',非地雷为'0',所以相加在一起再-'0'会得到该数字的ASCII码值

最后,再test.c中game()函数中实现所有函数逻辑 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值