1. 程式人生 > >色盲小遊戲

色盲小遊戲

query 背景 true res exe n) class color 正則

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("你是色盲啊,,,少年");
        }
    }




})

色盲小遊戲