网页颜色分辨测试小游戏的js化辨别及优化

  相信大家都玩过一种网页游戏,通俗的可以叫颜色分辨测试游戏(这个名字对不对我也不知道,不要在意这些细节),也就是下面截图这个玩意,一看就明白;细细把玩过一段时间,作为一个一百米开外男女不分的弱视青年,每每过不了几关就传送门在此,对这个结局我也是异常无语,都怪当初学习太用功了(呵呵),想挑战的点击这里

  这个游戏的流程就是页面上会出现不同颜色的格子,也就是div啦,点击颜色唯一的格子就算过关,然后格子变多(max后不再变多),颜色变的相近,难度也就变大了,直到点错了或者倒计时结束了,很简单的样子,作为前端人员后不犹豫的F12之,如下:

  就是这个结构啦,#box中一串span,其中有个span的style:background是唯一的,点击这个唯一的就OK啦,于是我就顺其自然的想用脚本代替我逐个点击,没办法视力不行啊,还想省力,于是直接码之如下:

//取到所有backgroundvar stylelist = new Array();
$("#box span").each(function() {
    for(var i = 0; i < $("#box span").length; i++) {
        stylelist[i] = $(this).attr("style");
    }
});
//分割数组
var s = stylelist.join(",") + ",",
    copy;
for(var i = 0; i < stylelist.length; i++) {
    //取出唯一style
    if(s.replace(stylelist[i] + ",", "").indexOf(stylelist[i] + ",") > -1) {
        copy = stylelist[i];
    }
}
//不解释了吧
$("#box span").each(function() {
    if($(this).attr("style") != copy)
    $(this).click();
    return;
});

  然后上面的代码就可以代替手动点击了,很方便有木有,下面是我实测运行的结果:(如果有纯手点的记录超过我这个的,请收下我的膝盖)

  168关,你没有看错,就是168,一分钟时间通过168关,而且中间有浏览器反应的缓慢时间,所以真实的应该比这个还要高(开始有点理解游戏外挂了啊喂),但是这段代码太粗糙了(span少可以秒),效率很低,这个后面会继续说;

  如果有人问,桥豆麻袋~你是怎么运行的,浏览器上运行?这就说明你很少用浏览器调试啊,方法如下:

  简单粗暴直接运行就行了,当然这也不是最优的选择,因为每次到新关卡(新页面)都要手动去运行,也着实累手(回车键一脸委屈),可以考虑封装成浏览器插件,页面近来就自动运行了,省心省力~~

  接着上面所的效率说,来优化这段代码,之所以说这段代码粗糙,是因为它是遍历所有span,这里是不多所以几乎是秒过,如果是span很多或者性能要求极致的大厂,这段代码是通不过的,优化的方案就是遍历所有的span的style的时候,第一次遇到唯一style就操作了,比如有10000个格子,第十个就是不同的格子,所以只要遍历到这里就结束了,而不是遍历10000,不然浏览器君表示扛不住啊。。。话不多说码之如下:

var stylelist = new Array(),
    copy;
$("#box span").each(function() {
    for(var i = 0; i < $("#box span").length; i++) {
        stylelist[i] = $(this).attr("style");
        //初始格子数大于2
        for(var j=0;j<stylelist.length;j++){
            if(stylelist.toString().replace(stylelist[j],"").indexOf(stylelist[j])>-1){
                copy = stylelist[j];
            }
            return;
        }
    }
});//这里不知道还能不能优化,先mark一下
$("#box span").each(function() {
    if($(this).attr("style") != copy)
    $(this).click();
    return;
});

  好吧,其实顺起来看很简单,然而实现容易,最优不易,极致的优化要求对于编写者是个十足的考验,毕竟写的都是经验积累啊,今天先码到这里吧,文中如有纰漏或更好的方法欢迎小伙伴们指出。

时间: 2024-11-08 21:16:25

网页颜色分辨测试小游戏的js化辨别及优化的相关文章

[微信小游戏+Three.JS]给场景添加反射材质,实现3D水珠移动效果

前几篇博客,我分别加好了3D移动盒子,也给场景加好了天空盒 这篇博客,就给场景再加一些效果 绘制的水珠的源代码来自Three.JS在GitHub上的demo 小游戏所用到的,修改过的JS库,大家可以移步我之前发的博客下载 直接上代码 let THREE = require('libs/three.js') export default class Game3d { constructor() { this.scene = new THREE.Scene(); this.camera = new

微信小游戏 three.js jsonloader request:fail invalid url

微信小游戏中,用 THREE.JSONLoader 直接加载本地的 json 文件,报错.估计是跨域访问的问题 解决:把 json 文件放到服务器上,通过 url 来访问. 临时测试的话,在本地起一个 http 服务器 python -m SimpleHTTPServer 8080,然后通过 http://localhost:8080/xx/yy.json 访问,localhost 改为本机 ip 方便在手机上预览 原文地址:https://www.cnblogs.com/hangj/p/105

观摩制作小游戏(js应用)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

玄机网C#论坛测试小游戏

http://files.cnblogs.com/ro4ters/EasyGame.zip http://www.xuanjics.com/thread-39-1-1.html 具体活动地址

玩一下,看你能坚持多久? 空军测试小游戏

原文地址:https://www.cnblogs.com/levia/p/11366464.html

21款网页版html5小游戏源码

html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js html5 2048数字游戏源码_2048网页版源码下载 html5盲打高手打飞字游戏下载_网页版英文打飞字游戏源码下载 jQuery flappy bird电脑版小游戏源码下载 网页版html5 3d俄罗斯方块游戏源码下载 jQuery html5迷宫游戏源码下载 html5网页游戏仿flappy

HTML5小游戏源码收藏

html5魅族创意的贪食蛇游戏源码下载 html5网页版打砖块小游戏源码下载 html5 3D立体魔方小游戏源码下载 html5网页版飞机躲避游戏源码下载 html5三国人物连连看游戏源码下载 js html5 2048数字游戏源码_2048网页版源码下载 html5盲打高手打飞字游戏下载_网页版英文打飞字游戏源码下载 jQuery flappy bird电脑版小游戏源码下载 网页版html5 3d俄罗斯方块游戏源码下载 jQuery html5迷宫游戏源码下载 html5网页游戏仿flappy

小游戏专场:腾讯云Game-Tech技术沙龙上海站顺利落下帷幕

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 9月14日腾讯云GAME-TECH技术沙龙小游戏专场在上海顺利举办,此次技术沙龙由腾讯云的资深专家,以及Layabox游戏引擎的大牛为游戏从业者带来了众多技术干货,例如腾讯游戏云小游戏解决方案.微信小游戏入门与常见问题解惑.H5游戏语音解决方案.腾讯云数据库小游戏应用实践经验.微信小游戏运营及技术优化等.针对这些技术主题,专家大牛们与现场的游戏同仁们进行了深入的经验分享和讨论,并为游戏从业者解答了疑惑

js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>js网页版小游戏</title> <style media="screen"> .wrap { width: 577px; outline: 1px solid hotpink; margin: 100px auto; box-shadow: 0 0 5px; } .