编程语言
首页 > 编程语言> > 还在玩扫雷游戏?P7大牛带你探秘雷场,探究javascript背后的秘密

还在玩扫雷游戏?P7大牛带你探秘雷场,探究javascript背后的秘密

作者:互联网

今日分享开始啦,请大家多多指教~

今天给大家分享的是扫雷,这是系统自带的经典小游戏,以前上学那会上机的时候就经常玩这个,很喜欢,所以尝试一下。

效果图

实现思路

1.创建9行9列的二维数组。

2.设置雷:随机行数 i 和列数 j,根据随机到 i、j 从二维数组中取出对应的元素,将取到的元素设置一个属性type等于1,表示当前元素已经是雷,并且递增雷计数器,然后递归调用;如果取到的元素已经是雷了,则跳过继续执行,雷计数器达到设定的最大值就跳出递归。

3.计算每个元素周围的雷数量(周围指的是 左上、上、右上、右、右下、下、左下、左 这8个位置),当前位置显示对应的数字(待会内容里面细说)

4.同样根据这个二维数组来创建遮罩的小方块,正好盖住之前创建的图形。

5.点击这个遮罩的小方块则触发揭开,揭开后根据对应的数字或者雷做不同的操作。

代码实现

创建背景及相关元素

创建雷和显示对应的图片

1.随机row 和 col,并从二维数组中获取到这个对象;
2.判断他是否是雷,如果是则跳过当前;
3.如果当前不是雷,则标记当前对象为雷对象,并且更改图片;
4.递归,当达到设定的数量时跳出。

计算周围雷的数量并显示

1.循环之前定义的二维数组

2.如果当前元素的下标是(i,j),则左上为(i-1,j-1),上为(i-1,j ),右上为(i-1,j+1),以此类推,如下图所示:

3.分别取出这些元素,并判断他们是不是雷,如果是则计数累加,最后将计数对应到相应的图片,然后显示出来。

创建遮罩

创建计时和计数器

加入鼠标移动事件

加入鼠标点击事件

成功判定1

未打开的数量与雷的数量相同

成功判定2

标记为雷(插旗)的数量与类总数相同

触雷效果

鼠标点击雷后,会触发雷爆炸的一个动画,这是通过图片的切换来实现的

 

加入鼠标右键事件

此事件是做插旗或者标记为未知等操作的。

最后加入重新开始事件,胜利和失败图片显示就完成了。

小结

用canvas编写了这个小游戏,看着还行,不知道会不会有什么我没发现的bug,难度目前是设置成简易的,如果要改难度,代码稍做修改即可。

今日份分享已结束,请大家多多包涵和指点!

 

标签:遮罩,javascript,鼠标,创建,元素,大牛带,二维,数组,雷场
来源: https://www.cnblogs.com/pfx1995/p/14736740.html