C---扫雷

接上一篇文章,这次我就来详细说明我的思路啦!

简单的扫雷版本,求路过的大佬放过!!!

效果实现:

        

代码运行先打印一下选择菜单,这里进入游戏,让用户选择需要排查的坐标,根据用户选择的坐标,如果该坐标是雷的话会打印“很遗憾,你被炸啦!”后结束此次游戏,如果该坐标不是雷,则会在选择的坐标打印出该坐标周围的雷的个数,然后游戏继续进行,游戏结束有两种可能,1、排查完所有的雷。2、被雷炸死。

核心思路:

        定义两个数组,一个数组作为雷盘,放置雷的信息,一个数组作为显示所选坐标周围雷的个数,效果如下:

接下来按照各文件依次说明

main.c

        主要放整体的框架,整体框架很重要!!!!先构思好整体框架再去逐层突破!!!

老生常谈,先来 一个用户输入,根据输入的内容进入不同的程序,很明显这里我们需要用到循环确保程序可以循环进行。menu和game是自定义的函数,在后面会有讲解。

构造menu和game函数,menu的作用是打印开头的菜单选择,如下:

game函数是整个代码的核心,游戏的运行靠game去实现,game函数中又定义了其他实现函数,将在game.c中实现,函数作用看注释 。

                                                                      数组1

111
111
111

                                                                     数组2

00000
01110
01110
01110
00000

在选择排查坐标之后我们需要给粗该坐标周围的雷个数,为了方便程序书写,我选择去改变数组的范围。我们实际显示的雷盘是数组1,game.h中宏定义行和列的原因就在这里,在显示所排查坐标周围雷个数时对于边界坐标不去单独特殊处理,直接扩大一圈定义为0即可。

00000
01110
01110
01110
00000
x-1,y-1x-1,yx-1,y+1
  x,y-1  x,y  x,y+1
x+1,y-1x+1,yx+1,y+1

game.c

对雷盘的初始化:

对应main.c中的

对数组的初始化,根据set为‘0’还是‘*’去初始化两个雷盘,‘0’即将数组1初始化为全‘0’,此时还没有放置雷,数组2初始化为‘*’,可以自行选择初始化类型。

回到game.c

雷盘的打印:

放雷啦!!!

效果如下:

重点----排雷!!!!

GetMineCount用来获取排查坐标周围雷个数,因为我们一开始初始化雷盘时用的是字符,这里我们需要的是整型的数字。’0‘对应的ASCII是48,’1‘为49,····依此递推,我们要得到整型数字,1--->'1'-'0',2--->'2'-'0',·····,所以我们让得到的字符-’0‘就可以得到想要的整型数字。减少重复-’0‘,我们直接将所求坐标全部相加之后整体-8*’0‘即可。得到想要的整型数字之后,方便显示,我们又改回字符,即让所得count+’0‘,又变回字符类型。

好啦!以上就是我的代码和思路说明啦,希望可以对你有所帮助。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值