扫雷游戏讲解

目录

‘一.排雷思路

二.游戏分析

三.采用多文件

四.游戏菜单

五.面临的问题

六.解决问题

七.实现 -- 在gamen.c函数实现

八.创建和初始化

九.打印棋盘

十.布置雷

十一.排查雷


‘一.排雷思路

(1)在地图上布置10个雷。

(2)排查雷:如果位置是雷,就炸死了,游戏结束.不是雷,就统计这个坐标周围的雷的个数,并显示。

(3)如果,把所有非雷找到游戏结束,获胜。

(4)排查雷,是排查周围8个坐标一圈有几个雷。

二.游戏分析

(1)假如我们设计1个9x9的游戏.那就是一个9x9的二维数组

(2)布置雷,存放1,没有雷布置0。

(3)存放雷的信息和不是雷的信息,涉及:二维数组。

三.采用多文件

(1)game.c函数调用 -- 游戏模块
(2)fufu.c函数定义 -- 游戏模块

(3)gamen.h声明

四.游戏菜单

我们要先写个大概的游戏框架,再来写排雷游戏

这3个必须在循环里面,要是你输入的不是1也不0,走default每次循环都会打印输出游戏菜单,喊你输入值

因为扫雷游戏代码量200+所以我们不可能全部代码写完了来判断,可以自己打印下结果看下有木有问题。

我们走case 1:肯定不是打印扫雷游戏这么简单,只是为了验证前面代码是否正确。创建个game函数,在函数内部实现这个游戏。

五.面临的问题

(1)当我们去排雷,如果不是雷0,是雷1,但是还要统计周围几个雷,要是统计周围的雷1个了?

到底是雷的1,还是周围坐标雷的1.冲突;要放雷的信息,非雷的信息,还要放排查雷的信息。

一个组数放3类数组,容易产生歧义。存放数据类型太多,容易产生歧义

(2)你在排查雷的时候,每个坐标都要统计周围8个坐标雷的个数的时候,可能会越界。怎么办 ?

 

六.解决问题

(1)越界问题:本来是9 * 9的棋盘;但我们创建数组的时候11 * 11的棋盘;行上下多了2行,列上下多2列

(2)存放数据类型太多,容易产生歧义:创建2个数组,一个存放雷的信息,另一个存放排查出雷的信息

(3)虽然我们创建的11*11棋盘,最后用户看见,体验的是9*9棋盘,所以这里初始化11*11的棋盘,打印输出是9*9棋盘

 
 

七.实现 -- 在gamen.c函数实现

1.排查出雷信息的数组:为了神秘性打印的时候全初始化为'*',周围几个雷显示几

2.char mine[11][11]; 雷--'1', 非雷-- '0'

3.char show[11][11];全部初始话'*'

这里虽然创建了数组大小,但是写死了,不方便后期修改代码。

我们可以去我们game.头文件,用define定义常量,我们要用的库函数也可以写在game.h文件对应我们的.c文件只需要包含咋们创建的头文件,自己创建的头文件要用双引号包含比如:#include"game.h"

大写;ROW , COL =9;大写ROWS,COLS=11。

注意:我们所有的内容都是放在9*9的棋盘上,只是为了排查周围几个防止越界。

八.创建和初始化

重点:这里利用了函数的复用,不用为了2个数组初始化,创建2个函数。只需要i把数组初始化的值传过来就行ret。

容易出错点:

(1)大家在game.h文件定义常量,在game.c文件写名字或者大写错误;

(2)对于刚没学过,或者没用多久多文件使用的,很容易头昏,写着写着不知该干嘛了

(3)要分清使用的是函数调用,函数定义,和声明。

(4)函数调用就是实参,传递自己创建变量名字,函数定义和声明是形参,接收传递过来的值和地址名字可以自己改变。

九.打印棋盘

(1)创建个函数实现打印功能

(2)头文件声明

(3)实现函数功能

要打印每行的行号。

可以运行一下程序,看下自己代码有木有错误,有错误进行调试修改。

核心:

(1)布置雷:边上一圈是不用放雷的,雷需要放在9x9棋盘

(2)排查雷

十.布置雷

(1)要用坐标随机布置雷;x = rand()%9+1=1--9 ,y = rand()%9+1=1--9.
补充:模9的余数是0 - 8,加个1就是1 - 9;模10的余数是0-9,加个1 1--10
(2)用rand函数生成坐标,要用srand(( unsigned int) time(NULL))
(3)要判断一下这个位置有木有雷,没有雷才布置.

十一.排查雷

1.数组mine排查雷,信息放到数组show里面。
2.涉及2个数组,涉及排查和存放信息的时候只涉及9*9格式
3.要输入的合法坐标排查,所以要判断是否合法
4.合法之后判断你输入的坐标有木有雷
5.有雷你被炸死,打印雷所在的位置,然后break出去
6.如果没踩中雷你要排查周围八个坐标,有几个雷
7.你知道周围有几个雷,假如你周围有4个雷,要把数字4转换字符4
8.字符转换数字:'0'-'0'=0,'1'-'0'=1,'4'-'0'=4,数字字符 - 字符0 等于本身数字
9.数字转换字符:4+'0'=4,数字 + 字符0等于本身数字字符

10.排查周围雷的信息放到show数组里面

总结:可以先慢慢练习,对于新手来说有点难,要结合调试多试试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值