zoukankan      html  css  js  c++  java
  • 舒尔特方格 记忆力训练 前端源代码

    百度的舒尔特方格介绍主要内容如下:

    舒尔特方格(Schulte Grid)是一种训练注意力的方法。在一张方形卡片上画上 1cm*1cm 的 25 个方格,格子内任意填写上阿拉伯数字 1 ~ 25 等共 25 个数字。训练时,要求被测者用手指按 1 ~ 25 的顺序依次指出其位置,同时诵读出声,施测者一旁记录所用时间。数完 25 个数字所用时间越短,注意力水平越高。

    以 7—12 岁年龄组为例,能达到26"以上为优秀,学习成绩应是名列前茅, 42"属于中等水平,班级排名会在中游或偏下, 50"则问题较大,考试会出现不及格现象。

    以 12 ―― 14 岁年龄组为例,能到达 16 "以上为优良,学习成就应是名列前茅, 26 "属于中等水平,班级排名会在中游或偏下, 36 "则问题较大,测验会呈现不合格现象。

    18 岁及以上成年人最好可到达 8 "的程度, 20 "为中等程度。

    由于纸质的是固定的位置,不能随机排布数字,记忆好了就可以提速,容易产生厌倦心理,所以我就想着用程序写一个,每次都刷新界面。

    下面给出前端的网页代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            *{
                padding: 0;
                margin: 0;
                box-sizing: border-box;
            }
            .left-time{
                text-align: center;
                color: #e73480;
                margin-top: 10px;
                height: 20px;
                font-size: 20px;
            }
            .num-area{
                width: 200px;
                height: 200px;
                display: flex;
                flex-wrap: wrap;
                margin: 20px auto;
                border: 1px solid #e73480;
                cursor: pointer;
            }
            .num-area .num-item{
                width: 20%;
                height: 20%;
                border: 1px solid #e73480;
                text-align: center;
                line-height: 38px;
                cursor: pointer;
            }
            .num-area .num-item.selected{
                background: green;
            }
            .game-status{
                padding: 30px;
                text-align: center;
            }
            .game-status .module{
                display: inline-block;
                padding: 10px 20px;
                border-radius: 5px;
                cursor: pointer;
            }
            .count-up{
                margin-right: 20px;
            }
            .game-status .module.active{
                background-color: #e73480;
                color: #fff;
            }
            .start{
                cursor: pointer;
                display: inline-block;
                padding: 10px 20px;
                border-radius: 5px;
                background-color: #e73480;
                color: #fff;
                margin-bottom: 15px;
            }
        </style>
    </head>
    <body>
        <div class="left-time"></div>
        <div class="num-area">
    
        </div>
        <div class="game-status">
            <div class="btn start">开始</div>
            <!-- <div class="btn pause">暂停</div> -->
            <br />
            <div class="module count-up">计时模式</div>
            <div class="module count-down">挑战模式</div>
        </div>
        
    <script>
        var arr = [];
        for(var i = 1; i <= 25; i++){
            arr.push(i);
        }
    
        // 数组乱序
        function disOrder(arr){
            function compare(a, b){
                return 0.5 - Math.random();
            }
            arr.sort(compare);
            return arr;
        }
    
        arr = disOrder(arr);
        console.log(arr);
    
        // 通过class过去元素
        function getClass(className){
            return document.getElementsByClassName(className);
        }
    
        var timeDom = getClass("left-time")[0];
        var numsDom = getClass("num-area")[0];
        var statusDom = getClass("game-status")[0];
    
        // 渲染1-25的方格
        function renderNums(numList){
            var str = "";
            for(var i = 0, len = numList.length; i < len; i++){
                str += '<div class="num-item">'+ numList[i] +'</div>'
            }
            numsDom.innerHTML = str;
        }
    
        // renderNums(arr);
    
        var findNum = 1; // 当前需要查找的下标
        var canChoose = false;
        var gameModule = 0; // 0 count-up  1 count-down
    
        // 为每个方格绑定点击事件——事件委托
        function bindEvent(){
            numsDom.onclick = function (e) {
                if(!canChoose){
                    console.log("当前不可点击");
                    alert("请点击开始继续");
                    return;
                }
                e = e || event;
                console.log(e);
                var target = e.target || e.srcElement;
                if(target.classList.contains("num-item")){
                    if(target.innerHTML == findNum){
                        target.classList.add("selected");
    
                        if(findNum == arr.length){
                            // alert("胜利了");
                            success();
                        }else{
                            findNum += 1;
                        }
                    }else{
                        // alert("请按顺序点击");
                    }
                }
            }
        }
    
        bindEvent();
    
        // 渲染当前模式
        var modules = getClass("module");
        function renderModule(){
            for(var i = 0, len = modules.length; i < len; i++){
                if(gameModule == i){
                    modules[i].classList.add("active");
                }else{
                    modules[i].classList.remove("active");
                }
            }
        }
    
        renderModule();
    
        // 模式切换
        for(var i = 0, len = modules.length; i < len; i++){
            (function(n){
                modules[n].onclick = function () {
                    console.log(startTime , timer);
                    if(startTime || timer){
                        console.log("当前正在"+gameModule+"模式游戏,不可以切换");
                        return;
                    }
                    gameModule = n;
                    renderModule();
                }
            })(i);
        }
        
        var startTime = 0;
        var countDown = 15;
        var timer;
        var countUpTimer;
    
        // 开始
        var startBtn = getClass("start")[0];
        startBtn.onclick = function () {
            console.log(timer,"start")
            if(gameModule == 0){ // 计时模式
                if(startTime){
                    alert("游戏正在进行中");
                    return;
                }
                init();
                startTime = Date.now();
                var count = 0;
                timeDom.innerHTML = count;
                countUpTimer = setInterval(function(){
                    ++count;
                    timeDom.innerHTML = count;
                },1000);
            }else{ // 挑战模式 倒计时
                if(timer){
                    alert("游戏正在进行中");
                    return;
                }
                init();
                countDown = 15;
                timeDom.innerHTML = countDown;
                timer = setInterval(function () {
                    console.log(timer);
                    countDown --;
                    timeDom.innerHTML = countDown;
                    if(countDown == 0){
                        canChoose = false;
                        clearInterval(timer);
                        timer = undefined;
                        console.log(timer,"失败clear");
                        setTimeout(function () {
                            alert("挑战失败");
                        },0);
                    }
                }, 1000);
            }
        }
    
        // 完成任务的处理
        function success () {
            canChoose = false;
            console.log("胜利");
            if(gameModule == 0){
                var endTime = Date.now();
                timeDiff = parseInt((endTime - startTime) / 1000 * 10) / 10;
                console.log("用时" + timeDiff);
                startTime = 0;
                clearInterval(countUpTimer);
                console.log("成功清理startTime");
                // alert("用时" + timeDiff + "秒");
            }else if(gameModule == 1){
                clearInterval(timer);
                timer = undefined;
                console.log(timer,"成功clear")
                alert("挑战成功");
            }else{
                console.log("模式异常");
            }
        }
    
        function init(){
            arr = disOrder(arr);
            renderNums(arr);
            findNum = 1;
            canChoose = true;
        }
    </script>
    </body>
    </html>

    界面入下图

  • 相关阅读:
    Nginx服务器环境搭建
    PostgreSQL常见问题处理方法
    Linux之awk使用
    PostgreSQL常用SQL
    用apache commons-pool2建立thrift连接池
    redis开发小结
    如何解决netty发送消息截断问题
    后端服务开发总结
    利用git reflog找回错误的重置
    TCP长链接调试利器nc
  • 原文地址:https://www.cnblogs.com/zhaodesheng/p/14289181.html
Copyright © 2011-2022 走看看