最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生JS面向?qū)ο髮崿F(xiàn)打字小游戲

 更新時間:2021年09月13日 17:37:45   作者:我是真的不會前端  
這篇文章主要為大家詳細(xì)介紹了原生JS面向?qū)ο髮崿F(xiàn)打字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JS面向?qū)ο髮崿F(xiàn)打字小游戲的具體代碼,供大家參考,具體內(nèi)容如下

Demo介紹

通過鍵盤點擊下落小球所顯示的數(shù)字,小球刷新再任意位置重新掉落。并且,每五個球后掉落速度加快
小球刷新位置 大小,顏色隨機。用面向?qū)ο骳lass方法實現(xiàn)
該demo源碼可直接使用。賦值到html文件 然后打開就可以使用,可用作學(xué)校課設(shè)使用

源碼

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .title{
        width: 1200px;
        height: 80px;
        margin:400px auto;
        color: darkblue;
        text-shadow: 3px 3px 3px black;
        font-size: 80px;
        font-weight: bolder;
        text-align: center;
        font-family: "楷體";

    }
    .name{
        width: 1000px;
        height: 40px;
        margin:0 auto;
        color: skyblue;
        text-shadow: 3px 3px 3px black;
        font-size: 40px;
        font-weight: bolder;
        text-align: center;
        font-family: "楷體";
    }
</style>

<body>
    <div style="font-size: 40px;">當(dāng)前分?jǐn)?shù)<div class="score" >0</div></div>
    <div class="title">原生js小Demo:打字練習(xí)游戲</div>
    <div class="name">作者:lz</div>
</body>
<script>
    class TypingGame {
        constructor() {
            this.oSpan
            this.speed = 2;
            this.timer = "";
            this.word;
            this.colors = ["red", "orange", "purple", "black", "pink", "blue", "skyblue", "yellowgreen", "brown", "tomato", "indianred", "orchid", "peru", "aqua", "slateblue", "gray", "grey", "crimson","green"]//顏色集合
            this.createWord(this.speed);
            document.onkeydown = e => {
                var e = e || window.event;
                var keycode = e.keyCode || e.which;
                // TypingGame.oSpan=this.$$("span");
                var keyword = String.fromCharCode(keycode).
                    toLowerCase()
                if (this.word === keyword) {
                    // 打掉一個 - 計分
                    // 獲取原來的分
                    var score = this.$('.score', false).innerText - 0
                    // 讓分?jǐn)?shù)+1
                    score++
                    // 加1以后的分?jǐn)?shù)放進div中
                    document.querySelector('.score').innerText = score
                    if (score === 5) {
                        this.speed += 2//每過五個字母,下落速度加快
                    }
                    this.oSpan.parentElement.removeChild(this.oSpan)
                    this.createWord(this.speed)
                }
            }


        }
        createWord(speed) {
            let wh=this.getRandom(30,80);//隨機大小
            this.oSpan = this.creEle('span');
            //    console.log(this.oSpan)
            this.setStyle(this.oSpan, {
                width: wh+"px",
                height: wh+"px",
                position: 'absolute',
                top: 0,
                left: this.getRandom(document.documentElement.clientWidth - 30) + "px",
                borderRadius: "50%",
                lineHeight: '30px',
                textAlign: 'center',
                backgroundColor: this.colors[this.getRandom(18)],
                color: "white",
                fontWeight: "bold",
                textAlign:"center",
                lineHeight:wh+"px"
            })

            document.body.appendChild(this.oSpan)
            // 隨機字符:97~122
            var randomNum = this.getRandom(97, 123)
            this.word = String.fromCharCode(randomNum);

            this.oSpan.innerText = this.word
            // 這個標(biāo)簽要慢慢向下運動
            this.elementsMove(this.speed);
        }
        elementsMove() {
            // console.log(this.oSpan)
            // 定時器
            clearInterval(this.timer)
            this.timer = setInterval(() => {
                // 獲取高度

                var t = this.oSpan.offsetTop;
                // 加大高度
                t += this.speed;
                console.log(this.speed)
                // 如果這個標(biāo)簽到了瀏覽器的最低端,GAME OVER
                if (t >= document.documentElement.clientHeight - 30) {
                    clearInterval(this.timer)
                    if (confirm("GAME OVER, 是否重玩?")) {
                        location.reload();//刷新重玩
                    }
                }
                // 加大后設(shè)置給標(biāo)簽的top
                this.oSpan.style.top = t + "px"
            }, 50)
        }
        setStyle(ele, styleObj) {
            for (var attr in styleObj) {
                ele.style[attr] = styleObj[attr]
            }
        }
        $(tag, all = false) {
            return all ? document.querySelectorAll(tag) : document.querySelector(tag);
        }
        creEle(tag) {
            return document.createElement(tag)
        }
        getRandom(a, b = 0) {
            var max = Math.max(a, b);
            var min = Math.min(a, b)
            return Math.floor(Math.random() * (max - min)) + min
        }
    }
    new TypingGame;
</script>

</html>

Demo截圖

還可以改進的地方

可以自行改寫
可以增加打錯提示,且可以隨機刷新的高度。可以進行一些速度優(yōu)化。把動畫改成requestAnimationFrame()效果更真實。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript面向?qū)ο笾x成員方法實例分析

    javascript面向?qū)ο笾x成員方法實例分析

    這篇文章主要介紹了javascript面向?qū)ο笾x成員方法,實例分析了成員方法的定義與使用技巧,需要的朋友可以參考下
    2015-01-01
  • JavaScript利用多彩線條擺出心形效果的示例代碼

    JavaScript利用多彩線條擺出心形效果的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript語言實現(xiàn)多彩線條擺出心形效果,文中的實現(xiàn)步驟講解詳細(xì),快跟隨小編一起動手嘗試一下吧
    2022-07-07
  • 利用js-cookie實現(xiàn)前端設(shè)置緩存數(shù)據(jù)定時失效

    利用js-cookie實現(xiàn)前端設(shè)置緩存數(shù)據(jù)定時失效

    這篇文章主要介紹了利用js-cookie實現(xiàn)前端設(shè)置緩存數(shù)據(jù)定時失效,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 網(wǎng)頁取色

    網(wǎng)頁取色

    網(wǎng)頁取色...
    2006-10-10
  • 小程序分享模塊超級詳解(推薦)

    小程序分享模塊超級詳解(推薦)

    這篇文章主要介紹了小程序分享模塊超級詳解(推薦),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • javascript數(shù)組的擴展實現(xiàn)代碼集合

    javascript數(shù)組的擴展實現(xiàn)代碼集合

    非常不錯的javascript數(shù)據(jù)功能增強函數(shù)
    2008-06-06
  • JS如何實現(xiàn)封裝列表右滑動刪除收藏按鈕

    JS如何實現(xiàn)封裝列表右滑動刪除收藏按鈕

    這篇文章主要介紹了JS如何實現(xiàn)封裝列表右滑動刪除收藏按鈕,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • JavaScript實現(xiàn)頁面中錄音功能的方法

    JavaScript實現(xiàn)頁面中錄音功能的方法

    這篇文章主要給大家介紹了關(guān)于JavaScript實現(xiàn)頁面中錄音功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 如何用JavaScript實現(xiàn)功能齊全的單鏈表詳解

    如何用JavaScript實現(xiàn)功能齊全的單鏈表詳解

    這篇文章主要給大家介紹了關(guān)于如何用JavaScript實現(xiàn)功能齊全的單鏈表的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • ES6的新特性概覽

    ES6的新特性概覽

    Nick Justice是GitHub開發(fā)者計劃的一員。早在ES6語言標(biāo)準(zhǔn)發(fā)布之前,他就借助像Babel這樣的轉(zhuǎn)譯器以及最新版本的瀏覽器在自己的項目中使用ES6特性。他認(rèn)為,ES6的新特性將極大地改變JavaScript的編寫方式
    2016-03-03

最新評論

清丰县| 西华县| 洞头县| 安化县| 黄龙县| 方山县| 玉林市| 任丘市| 宜阳县| 宜兰县| 电白县| 万宁市| 湖州市| 武胜县| 宁都县| 达拉特旗| 贵州省| 丹凤县| 墨脱县| 阆中市| 依兰县| 当雄县| 晋城| 石门县| 华安县| 水富县| 普格县| 安国市| 汾阳市| 孟村| 金堂县| 中宁县| 略阳县| 霸州市| 杂多县| 西藏| 海口市| 锦屏县| 平度市| 理塘县| 石景山区|