扫雷网页版

扫雷游戏地址:扫雷 Minesweeper

移动端地址:手机扫雷

游戏特性:

  • 第一步不会触雷,同时也不会是数字。
  • 支持双键排除操作。
  • 三种难度可选择。
  • 三种颜色图标可选择。
  • 游戏在本地记录每种难度下最佳五局成绩。
  • 支持自定义模式。

更新:2021-3-20

将数字提示由文字改为图标,以消除不同浏览器之间的显示差异。

更新:2021-2-10

增加问号开关。

更新:2020-12-17

增加自定义模式。

改善了双键操作时的动画效果,提升操作手感。

更新:2020-9-14

修复了游戏结束判定。

更新:2020-5-11

1、图标绘制由CSS改为图片,以求更好的性能。

2、更细致的模拟 windows7 扫雷的一些行为,比如松开触发扫雷动作,如果左键按下后,右键随后也按下,会取消扫雷动作。双键按下划过图形区域,也有动画(不知道这有什么用),且无论哪个先松开,都不会触发动作。双键排除时红色的X号会闪两下(感觉这东西应该用 CSS3 动画实现,可我搞不定,还是用了setinterval 函数)。

3、从知乎看到非常牛逼的 Knuth-Durstenfeld Shuffle 洗牌算法,也把它用上了,不过随机函数还是系统自带的,所以应该没啥实质的卵用。好处是看起来更合理。因为第一次点击布雷,除了第一步不能是雷以外,为了有更好的开局,周围 8 个也不能是雷,所以在生成雷的时候,会有一个最多 9 个坐标的排除列表。用原来的算法,感觉冲撞会很频繁,虽然以电脑的速度,一定能完成布雷,但不合理。


后记:一些实现细节

游戏的第一步不会是雷,实现原理就是游戏的布雷是从第一步点击开始的。还有一点,就是不但第一步不会是雷,而且也不会是数字,因为如果点到数字,对游戏的开局没有太大帮助。实现原理就是在第一步的基础上,通过第一个坐标,再获取周围最多8个坐标,然后在布雷的时候,将这最多9个坐标全部排除。

双键操作我觉得是游戏最麻烦的地方,游戏的双键操作并不是真的同时点击,而是左右任何一个按键按下去的情况下,再按下另一个,才会激活双键功能。我最初很困惑如何实现这个双键功能,甚至写了一个通过时间间隔判定是否是双键的功能。但后来发现,这样做虽然也能玩,但和 windows7 自带的扫雷动作是不一样的。最后一番琢磨,搞出来的这个基本和 windows7 扫雷一摸一样。另外也极力模拟一些细节,比如在大块的区域按下双键,无论任何顺序松开按键,都不会触发动作。同时,如果按下双键在任意区域移动,也会有连续的动画。

布雷算法最初用的就是随机生成横、竖坐标的随机数,如果重复则重新了,直到完成。这样做虽然能用,但显然不合理,有时候可能冲撞太多。后来看了大名鼎鼎的 Knuth 洗牌算法,惊呼牛逼,赶紧用上。具体实现就是整两个数组,一个是雷,一个是空白格子,空白格子再减去排除的格子数量,然后将其用洗牌算法打乱,然后再依次填充到一个映射布局的二维数组里(实际用的对象)。

清除一片的算法就是无脑遍历,每次清除一个格子的周围,循环到没有格子为止。感觉更正确的做法似乎应该用递归,但当时没想出来,而现在感觉没有必要再修改。

根据我对 Js 的理解,计时器功能应该是不精确的。

发表回复

相关推荐

跟校花同居是种什么体验(一)

跟大多数一样,我一直都幻想着有一个跟校花同居的梦想,万万没想到我这个屌丝居然也能梦想成真。

· 2分钟前

你所不知道的雲南:紅河蒙自碧色寨

我聽說在紅河蒙自市13公裡處有座村寨叫碧色寨哪裡有法國的歐式建築碧色寨歐式建築在一路上都有鮮花盛開,綠樹成蔭通往碧色寨...

· 5分钟前

一文读懂 | 口腔CBCT的前世今生

1895年,德国物理学家伦琴以妻子的左手为对象,拍摄了世界上第一张X光片,正式开启人类使用X光透视人体结构的历史。此后至今 ...

· 9分钟前

《制裁者》| 漫威终于出了个纯爷们儿的狠角色,爽!

前段时间,《行尸走肉》第八季终于回归了,大家可能依然沉浸在格伦之死的悲痛中,大概早把在第二季就领了盒饭的肖恩给忘了,

· 9分钟前

虾价暴跌不止!20头仅16元/斤,却还能赚大钱!他们到底做对了什么?

转载自“水产前沿”公众号,侵删 凭借稳定突出的表现,近年来泰国顶丰水产养殖有限公司(英文名:TOP AQUACULTURE TECHNOLOGY ...

· 13分钟前