美文网首页
打字游戏

打字游戏

作者: 升龙无涯 | 来源:发表于2021-08-31 14:22 被阅读0次

效果图如下:


打字游戏

html结构代码:

<style>
.box{
    width: 600px;
    height: 400px;
    background-color: hotpink;
    position: relative;

}
</style>
<button class="start">开始</button>
&nbsp;&nbsp;    得分:<span class="scoreBox">0</span>分
<div class="box"></div>

js逻辑代码:

// 获取所有标签
var startBtn = document.querySelector('.start');
var scoreBox = document.querySelector('.scoreBox');
var box = document.querySelector('.box');
// 定义大定时器变量
var timerId;
// 点击开始按钮,开始游戏
startBtn.addEventListener('click', click);
function click() {
    // 分数从0开始计算
    scoreBox.innerText = 0;
    // 间隔很短的时间,从上向下下来一个文字,这个文件不停的向下移动
    timerId = setInterval(function() {
        // 创建一个b标签
        var b = document.createElement('b');
        // 给b标签中放入随机小写字母 - 小写字母的阿斯克码是 97~122
        var code = getRandom(97, 123);
        // 将随机的阿斯克码转成小写字母
        var word = String.fromCharCode(code);
        // 将小写字符放入b标签中
        b.innerText = word;
        // 定义b标签的top值
        var t = 0;
        // 设置b标签样式
        setStyle(b, {
            width: '30px',
            height: '30px',
            backgroundColor: '#00f',
            color: '#fff',
            borderRadius: '50%',
            textAlign: 'center',
            lineHeight: '30px',
            position: 'absolute',
            top: t,
            left: getRandom(0, box.clientWidth - 30 + 1) + 'px'
        })
        // 将b标签放入box盒子中
        box.appendChild(b)
        // 让b标签向下移动
        // 将每个小定时器放在被移动的b标签属性中
        b.timer = setInterval(function() {
            // 让top值变量t,每隔20毫秒增加2px
            t += 2;
            // 限制top值
            if(t > box.clientHeight - 30) {
                t = box.clientHeight - 30;
                // 将大定时器停止,将所有小定时器停止,弹出游戏结束
                clearInterval(timerId);
                alert('游戏结束')
                // 遍历所有b标签,停止每个b标签上的定时器 - 并删除所有b标签
                for(var i = box.children.length - 1; i >= 0; i--) {
                    clearInterval(box.children[i].timer);
                    box.removeChild(box.children[i])
                }
            }
            // 将增加后的t设置到b标签的top
            b.style.top = t + 'px';
        }, 20)
    }, 1000)
}
// 鼠标抬起时,判断按下的键,是否在所有b标签内容中的1个,是的话就得分1,停止这个b标签的定时器,删除这个b标签
document.addEventListener('keyup', keyup);
function keyup() {
    // 获取事件对象
    var e = window.event;
    // 获取键盘码
    var keycode = e.keyCode || e.which;
    // 将键盘码转成小写字母
    var word = String.fromCharCode(keycode).toLowerCase();
    // 判断这个字母是否是b标签内容中的一个
    for(var i = 0; i < box.children.length; i++) {
        if(word === box.children[i].innerText) {
            // 得分加1
            var score = +scoreBox.innerText + 1;
            // 将分数放进得分盒子中
            scoreBox.innerText = score;
            // 停止这个b标签的定时器
            clearInterval(box.children[i].timer);
            // 删除这个b标签
            box.removeChild(box.children[i]);
            break;
        }
    }
}
// 获取随机数的函数
function getRandom(a, b = 0) {
    var max = a;
    var min = b;
    if(a < b) {
        max = b;
        min = a;
    }
    return Math.floor(Math.random() * (max - min)) + min;
}
// 批量设置样式的函数
function setStyle(ele, styleObj) {
    for(var attr in styleObj) {
        ele.style[attr] = styleObj[attr];
    }
}

相关文章

  • 打字游戏

    效果图如下: html结构代码: js逻辑代码:

  • jq打字游戏

  • 【打字游戏】说明

    小极客们,你们好! 打字游戏是由小超老师和小黑老师(刘佳旭老师)合作为大家制作的用来练习打字的小游戏,就是用咱们p...

  • Scratch编程-打字游戏

    从即日起,未来之源将会持续的为大家带来一个全新的编程课——《Scratch入门教程系列》。 新版本的课程汇聚了作者...

  • scratch实现打字游戏

    首先,我们来看一下游戏效果吧~ 看完了游戏效果,那我们接下来来分解一下这个程序 整个游戏分为背景/角色 1.实现角...

  • 刻意编程D9

    练习内容 打字游戏默写1遍 打字游戏代码片段练习4遍 感想 50分钟内完整默写1遍 限时完成可运行版本,查看运行结...

  • 2022-06-12打字练习的游戏

    打字练习的游戏 好些时候没有打字了,这久看了一本写作方面的书,上面说是要注意打字练习,如果更习惯手写,就要手写,如...

  • 打字游戏(使用Vue开发)

    这是一个打字游戏。 规则如下 1、当输入第一个字母的时候,开始计时,当完全输入正确,计时停止。并且不能继续输入。2...

  • C语言打字游戏源码

    到大街上,还是会羡慕那些情侣,但是依然相信舔狗一无所有,渣男满载而归。。。 ---- 网易云热评 #include...

  • 在终端里面测试你的的打字速度

    简介 如果是我这个时代的人,小学的时候肯定接触过一个游戏叫金山打字,也接触过这个警察抓小偷的打字游戏,今天介绍的是...

网友评论

      本文标题:打字游戏

      本文链接:https://www.haomeiwen.com/subject/rspbiltx.html