色盲小游戏

html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>色盲游戏</title>
    <script type="text/javascript" src="jquery-1.10.1.js"></script>
    <script type="text/javascript" src="JiChuShiJian.js"></script>
    <link href="JiChuShiJian.css" rel="stylesheet" type="text/css"/>
</head>
<body>
    <center>
    <h1>检测色盲小游戏,只有把颜色全部拼成一样才可以取得胜利哦!!!刚把得。。。</h1>

    <hr>

    <div id="box" style="width: 660px;height: 660px;background: black">

        <div class="divone red" style="width: 200px;height:200px; margin: 10px;float:left;"></div>
        <div class="divtwo green" style="width: 200px;height:200px; margin: 10px;float:left;"></div>
        <div class="divthree blue" style="width: 200px;height:200px; margin: 10px; float:left;"></div>

        <div class="divfour gainsboro" style="width: 200px;height:200px; margin: 10px; float:left;"></div>
        <div class="divfive pink" style="width: 200px;height:200px; margin: 10px; float:left;"></div>
        <div class="divsix cornflowerblue" style="width: 200px;height:200px; margin: 10px;float:left;"></div>

        <div class="divseven blueviolet" style="width: 200px;height:200px; margin: 10px;float:left;"></div>
        <div class="diveight greenyellow" style="width: 200px;height:200px; margin: 10px;float:left;"></div>
        <div class="divnine plum" style="width: 200px;height:200px; margin: 10px;float:left;"></div>
    </div>
        <hr>
        <button class="but" style="width: 100px;height: 60px;background: limegreen">验证一下</button>
    </center>
</body>
</html>

css

/*定义的9种颜色*/
.red{
    background:red;
}
.green{
    background: green;
}
.blue{
    background: blue;
}
.gainsboro{
    background: gainsboro;
}
.pink{
    background:deeppink;
}
.cornflowerblue{
    background: cornflowerblue;
}
.blueviolet{
    background: blueviolet;
}
.greenyellow{
    background:greenyellow;
}
.plum{
    background: plum;
}

/*标题背景色*/
h1{
    background: lightskyblue;
}

js

$(function () {
    //为每一个div设置单击事件
    //var flag=1;
    $('.divone').bind('click',fn);//fn如果直接加上括号  即fn() 就相当于直接调用 刷新页面还没有单击就会执行fn里边的过程
    $('.divtwo').bind('click',fn);
    $('.divthree').bind('click',fn);
    $('.divfour').bind('click',fn);
    $('.divfive').bind('click',fn);
    $('.divsix').bind('click',fn);
    $('.divseven').bind('click',fn);
    $('.diveight').bind('click',fn);
    $('.divnine').bind('click',fn);



    //为but验证按钮添加一个单机事件的监听 监听用户点击的时候验证所有的颜色是否一致
    $('.but').bind('click',checkcolor);


    function fn(){//这个函数完成的功能:实现单机div  div颜色改变  class属性值变更为 divXXX  color 的形式
        这里边先判断出 点击的是哪一个div  然后设置flag的值

        //alert($('.divone')[0].nodeName);
        //虽然每次 class的值都在改变 但是在获取的时候只能通过最初设置的class为准 前提是在下面不能使用removeClass()
        //removeClass('XXX')只能这样使用  这样能够保证在调试窗口中class动态变化 但是最初设置的class属性并不会被清除 [divone red  , divone green ]
        // 而且通过class获取的时候也是根据最初设置的值来获取的

        //获取当前div的class全部名称  然后使用正则表达式进行拆分 解析出class中空格后的颜色内容的内容
        //alert($(this)[0].nodeName);
        //alert($(this).attr('class'));//这里已经能够正确打印出每次单击时  产生的class属性值divone red, divtwo green
        var classstring=$(this).attr('class');
        //alert(classstring);
        //接下来就要使用正则表达式进行拆分
        var pattern=/\s([a-z]+)/;
        var result=pattern.exec(classstring);//取得divXXX后的颜色值 red green  不要忘记这里的字符串是带着空格的
        var removekongge=RegExp.$1;//使用的分组  所以$1就是第一个分组中返回的数据 这样就了去除空格;
        //alert(typeof removekongge);

        /*
         //下面进行逐个判断  然后动态设置flag的值  让颜色的变化按照一定顺序进行 即对应颜色div在变化的时候直接从css样式表中对应颜色的下一个颜色开始
         if(removekongge=="red"){
         flag=1;
         }else if(removekongge=="green"){
         flag=2;
         } else if(removekongge=="blue"){
         flag=3;
         }else if(removekongge=="gainsboro"){
         flag=4;
         }else if(removekongge=="pink"){
         flag=5;
         }else if(removekongge=="cornflowerblue"){
         flag=6;
         }else if(removekongge=="blueviolet"){
         flag=7;
         }else if(removekongge=="greenyellow"){
         flag=8;
         }else if(removekongge=="plum"){
         flag=9;
         }



         if(flag==1){
         $(this).removeClass('red').addClass('green');
         flag=2;
         }else if(flag==2){
         $(this).removeClass('green').addClass('blue');
         flag=3;
         }else if(flag==3){
         $(this).removeClass('blue').addClass('gainsboro');
         flag=4;
         }else if(flag==4){
         $(this).removeClass('gainsboro').addClass('pink');
         flag=5;
         }else if(flag==5){
         $(this).removeClass('pink').addClass('cornflowerblue');
         flag=6;
         }else if(flag==6){
         $(this).removeClass('cornflowerblue').addClass('blueviolet');
         flag=7;
         }else if(flag==7){
         $(this).removeClass('blueviolet').addClass('greenyellow');
         flag=8;
         }else if(flag==8){
         $(this).removeClass('greenyellow').addClass('plum');
         flag=9;
         }else if(flag==9){
         $(this).removeClass('plum').addClass('red');
         flag=1;
         }
         */
        //简化写法
        if(removekongge=="red"){
            $(this).removeClass('red').addClass('green');
        }else if(removekongge=="green"){
            $(this).removeClass('green').addClass('blue');
        } else if(removekongge=="blue"){
            $(this).removeClass('blue').addClass('gainsboro');
        }else if(removekongge=="gainsboro"){
            $(this).removeClass('gainsboro').addClass('pink');
        }else if(removekongge=="pink"){
            $(this).removeClass('pink').addClass('cornflowerblue');
        }else if(removekongge=="cornflowerblue"){
            $(this).removeClass('cornflowerblue').addClass('blueviolet');
        }else if(removekongge=="blueviolet"){
            $(this).removeClass('blueviolet').addClass('greenyellow');
        }else if(removekongge=="greenyellow"){
            $(this).removeClass('greenyellow').addClass('plum');
        }else if(removekongge=="plum"){
            $(this).removeClass('plum').addClass('red');
        }

    }

    function checkcolor(){//这个函数完成的功能就是:获取目前页面上所有div的class值 并且得到 divXXX color中的color值 比较他们的color是否一样  如果一样 则游戏过关
        var divall=$('#box div');//获取了9个div颜色块
        //下面进行遍历
        var flag=null;
        var result=true;
        divall.each(function (index,element) {
            //alert($(element).attr('class'));//可以打印出9个div的class属性值
            //var str=$(element).attr('class');
            var pattern=/\s([a-z]+)/;//创建正则表达式  使用分组
            //pattern.test($(element).attr('class'));//使用RegExp方法之前需要先执行以下test 或者exec方法
            var removekongge=pattern.exec($(element).attr('class'))[1];//去除了空格 这里得到的就是 color数值
            if(flag==null){
                flag=removekongge;
                //alert("第一次为空啊");
            }else{
                //如果不为空 那么就进行颜色的比较  如果不相等 就直接跳出返回false 说明颜色不一致 否则 判断到最后 返回true
                //alert("判断吧");
                if(flag!=removekongge){//不相等  返回false
                    result=false;
                }
            }

        });

        //遍历完毕  下面判断result的值
        if(result){
            alert("看来你不是色盲。。。");
        }else{
            alert("你是色盲啊,,,少年");
        }
    }




})

 

转载于:https://www.cnblogs.com/Joke-Jay/p/6941239.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的色盲派对小游戏的代码示例: ```python import random import tkinter as tk # 颜色盲模拟器,用于生成色盲用户看到的颜色 def simulate_color_blindness(color, blindness_type): if blindness_type == "protanopia": return (color[1]*0.567 + color[2]*0.433, color[1]*0.558 + color[2]*0.442, 0) elif blindness_type == "deuteranopia": return (color[0]*0.625 + color[2]*0.375, color[0]*0.7 + color[2]*0.3, 0) elif blindness_type == "tritanopia": return (color[0]*0.95 + color[1]*0.05, color[0]*0.433 + color[1]*0.567, 0) else: return color # 随机生成一组颜色 def generate_random_color(): return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) # 随机生成一组色盲用户看到的颜色 def generate_simulated_color(color, blindness_type): return tuple(int(c) for c in simulate_color_blindness(color, blindness_type)) # 检查用户选择的颜色是否正确 def check_answer(color, user_choice): return color == user_choice # 游戏主函数 def play_game(): colors = ["protanopia", "deuteranopia", "tritanopia"] color = generate_random_color() color_choices = [generate_simulated_color(color, blindness_type) for blindness_type in colors] root = tk.Tk() # 显示颜色 color_label = tk.Label(root, bg="#%02x%02x%02x" % color, width=30, height=10) color_label.pack() # 显示选项 for i, choice in enumerate(color_choices): choice_button = tk.Button(root, bg="#%02x%02x%02x" % choice, text="Option %d" % (i+1), width=30, height=5) choice_button.pack() # 绑定点击事件,检查答案 choice_button.bind("<Button-1>", lambda event, choice=choice: check_answer(color, choice)) root.mainloop() play_game() ``` 这个小游戏会在窗口中随机生成一组颜色,然后生成三个色盲用户看到的颜色作为选项。玩家需要选择他们认为是原始颜色的选项。如果选择正确,游戏会在窗口中显示“Correct!”,否则会显示“Incorrect!”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值