• 原生js实现选字游戏


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            #wrap {
                 400px;
                margin: 30px auto;
                font-size: 18px;
                box-shadow: 5px 5px 20px rgb(231, 188, 130);
                border-radius: 8px;
            }
            #header p:first-child{
                float: left;
                margin-left: 20px;
            }
            #header p:last-child{
                float: right;
                margin-right: 20px;
            }
        
            #main {
                clear: both;
                font-size: 150px;
                text-align: center;
                margin: 120px auto;
            }
            #wrap>p {
                text-indent: 2em;
                line-height: 35px;
                margin: 5px;
            }
            .choose{
                display: flex;
                justify-content: space-around;
            }
            .choose p {
                font-size: 30px;
                cursor: pointer;
            }
            </style>
    </head>
    <body>
        <div id="wrap">
            <div id="header">
                <p>倒计时:<span id="time">10</span>s</p>
                <p>得分:<span id="mark">0</span>分</p>
            </div>
            <div id="main"></div>
            <p>根据上面字体的颜色从下面选择正确的字,选择正确游戏自动开始.</p>
            <div id="choose" class="choose">
                <p>蓝</p>
                <p>黄</p>
                <p>绿</p>
                <p>粉</p>
                <p>红</p>
            </div>
        </div>
    
        <script>
        var time = document.getElementById("time");
        var mark = document.getElementById("mark");
        var main = document.getElementById("main");
        var smallFont = document.querySelector('#choose');
        var choose = document.querySelectorAll('#choose p');
        // console.log(choose);
        
    
        // 文字的数组
        var fontArr = ["红","橙","黄","绿","蓝"];
        // 文字颜色的数组
        var colorArr = ["red","orange","yellow","green","blue"];
        // 声明分数,时间,倒计时,
        var grade = 0; 
        var djs = 10;
        var timer;
        // 设置flag
        var flag = true;
        // 封装函数生成随机数
        function random(a,b){
            return Math.round(Math.random()*(a-b)+b);
        }
        // 随机数组
        function rnArr(){
            var arr = [];
            // 去重
            // 数组长度小于5时
            while(arr.length<5){
                // 生成0-4的随机数作为数组下标
                var n = random(0,4);
                // 生成对应下标的数字在之前数组中不存在,push
                if(arr.indexOf(n)==-1){
                    arr.push(n);
                }
            }
            return arr;
        }
        rnArr();
        // 创建页面文字
        function createFont(){
            // 随机文字数组,随机取出一个作为页面大字(随机的索引的value)
            main.innerHTML = fontArr[random(0,4)];
            // 随机颜色数组,取出一个颜色给大字
            main.style.color = colorArr[random(0,4)];
            // 创建小字
            // 随机数组,作为小字和小字颜色
            var smallIndexArr = rnArr(); //小字数组
            var smallColorArr = rnArr(); //小字颜色数组
            // 让小字随机变化
            // 循环遍历小字数组
            for(var j = 0; j < smallIndexArr.length; j++){
                // 小字数组的每一项设为字体颜色
                var fontIndex = smallIndexArr[j];
                // 小字数组内容作为数组元素的下标,找原始数组内容
                // 给页面小字的元素集合赋值
                choose[j].innerText= fontArr[fontIndex];
                var colorIndex = smallColorArr[j];
                choose[j].style.color = colorArr[colorIndex];
            }
        }
        createFont();
        // 给小字循环绑定点击时间
        for(var k = 0; k < choose.length; k++){
            choose[k].onclick = function(){
                // 获取当前大字的颜色
                var bigColor = main.style.color;
                // 获取当前的的文字
                var word = this.innerText;
                // 判断大字颜色下标和小字内容在文字数组里的下标
                if(colorArr.indexOf(bigColor)==fontArr.indexOf(word)){
                    grade++;
                    mark.innerHTML = grade;
                    createFont();
                    if(flag){
                        // console.log(djs);
                        timer = setInterval(function(){
                            djs--;
                            time.innerHTML = djs;
                            // console.log(djs);
                            if(djs == -1){
                                // 清楚计时器
                                clearInterval(timer);
                                // 结束弹窗
                                alert('辣鸡' + grade +'分');
                                grade = 0;
                                djs = 10;
                                mark.innerHTML = grade;
                                time.innerText = djs;
                                creatFont();
                                flag = true;
                            }
                        },1000)
                    }
                    flag = false;
                }
            }
        }
        </script>
    </body>
    </html>

    效果图

    游戏逻辑: 随机产生页面文字和颜色,选择正确加分。

    文章地址  https://www.cnblogs.com/sandraryan/

  • 相关阅读:
    ansible 通过堡垒机/跳板机 访问目标机器需求实战(ssh agent forward)
    运维标准化与流程化建设
    运维与自动化运维发展方向
    文件atime未变问题的研究
    ansible 任务委派 delegate_to
    ansible 调优
    windows中安装模拟器后修改模拟器中的hosts方法
    负载均衡服务器主要考量三个指标
    DRBD+NFS+Keepalived高可用环境
    sshpass
  • 原文地址:https://www.cnblogs.com/sandraryan/p/11583803.html
Copyright © 2020-2023  润新知