网页扫雷html css js,小游戏:扫雷 前端 H5 + CSS + JS

本文介绍了作者使用HTML、CSS和JavaScript实现的扫雷小游戏。文章分享了游戏的主要思路,包括随机生成雷的分布、点击格子判断是否踩雷、以及游戏胜利和失败的条件。此外,还讨论了难点,如自动展开格子的深度优先搜索实现和同时按下鼠标左右键的模拟。代码示例展示了游戏的样式和部分核心功能。
摘要由CSDN通过智能技术生成

简介

很久以前刚接触前端的时候做的扫雷小游戏。虽然花了不少时间,但是整个做下来,还是很有收获的。

现在来看代码还是比较一般的,但也是一番心血。

特地分享出来,希望对需要的人有所帮助。适合初学者练习。

运行效果

68af9e66ea15?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

运行效果

上方的表格左边格子表示剩余雷数,中间选择难度,右边计时。按下空格可以开始新游戏。

68af9e66ea15?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

游戏中

68af9e66ea15?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

游戏胜利

68af9e66ea15?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

游戏失败

主体思路

随机生成雷的分布,用二维数组储存。同时遍历数组,生成数字,表示周围的雷的数目,同样储存在这个二维数组中。

生成div来表示格子,并且绑定一个坐标属性。与二维数组一一对应。

点击格子,根据坐标判断是否点到雷。是雷就游戏结束,不是雷就显示数字。

难点

1.点击到空白处的时候,会自动打开一大片格子。这个效果当时也是研究了很久。

最后的实现方法是:设置一个searched数组,储存已经点击或者查找过的坐标。然后点到空白处的时候,向上、下、左、右、右上、左上、右下、左下八个方向进行深度优先搜索,并将搜索过的格子的坐标储存到searched数组。搜索终止的条件是:遇到searched数组中的坐标,或者遇到数字,或者遇到边界。

(2020.10.3 更新:今天回顾这个代码,发现如果使用广度优先效果会更好,只用向上下左右四个方向搜索。)

2.玩过扫雷的都知道扫雷有一个操作是:在一个数字块上同时按下鼠标的左键和右键,如果操作目标周围插旗的格子数目等于数字的值,那么就能快速打开周围所有未标记的格子。

然而同时按下鼠标的操作js是没有的。

我的解决是方法是,计算鼠标点击的时间,如果2次点击时间间隔很小,那么就认定是同时按下左右键。调试之后,发现时间间隔设置为100毫秒的效果比较好。

代码

扫雷

.grid{

width: 18px;

height: 18px;

background-color: #0066cc;

float: left;

border: 1px black solid;

}

.mine{

width: 18px;

height: 18px;

float: left;

background-image:url(mine.png);

background-size: 18px 18px;

border: 1px black solid;

}

.flag{

width: 18px;

height: 18px;

float: left;

background-image:url(flag.png);

background-size: 18px 18px;

border: 1px black solid;

}

.number{

width: 18px;

height: 18px;

float:left;

text-align: center;

line-height: 20px;

border: 1px black solid;

background-color: palegoldenrod;

font-weight: bold;

}

#box{

height: 200px;

width: 200px;

border

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值