ホームページ 毎日のプログラミング HTMLの知識 ネイティブJSで白いブロックを踏まないゲームを実装 (3)

ネイティブJSで白いブロックを踏まないゲームを実装 (3)

Dec 27, 2018 am 10:33 AM

前の記事では、「白いブロックを踏まないでください」ゲームのネイティブ JS 実装のソース コードの HTML 部分について簡単に説明しました。興味のある方は、「白いブロックを踏まないゲームのネイティブ JS 実装 (1)」および「白いブロックを踏まないゲームのネイティブ JS 実装 (2)」を参照してください。 )」。

ネイティブJSで白いブロックを踏まないゲームを実装 (3)

引き続きソース コードを結合し、CSS 部分と JS 部分を紹介していきます。

CSS コードは次のとおりです:

<style>
    * {
        margin: 0;
        padding: 0;
    }

    .box {
        margin: 50px auto 0 auto;
        width: 400px;
        height: auto;
        border: solid 1px #222;
    }

    #cont {
        width: 400px;
        height: 600px;
        position: relative;
        overflow: hidden;
    }

    #go {
        width: 100%;
        height: 600px;
        position: absolute;
        top: 0;
        font: 700 60px &#39;微软雅黑&#39;;
        text-align: center;
        z-index: 99;
    }

    #go span {
        cursor: pointer;
        background-color: #fff;
        border-bottom: solid 1px #222;
    }

    #main {
        width: 400px;
        height: 600px;
        position: relative;
        top: -150px;
    }

    .row {
        width: 400px;
        height: 150px;
    }

    .row div {
        width: 99px;
        height: 149px;
        border: solid 1px #222;
        float: left;
        border-top-width: 0;
        border-left-width: 0;
        cursor: pointer;
    }
    #count {
        border-top: solid 1px #222;
        width: 400px;
        height: 50px;
        font: 700 36px/50px &#39;微软雅黑&#39;;
        text-align: center;
    }

</style>
ログイン後にコピー

実際、CSS 部分に注意する必要があるのは、overflow: hidden スタイル属性です。 、これはオーバーフローと非表示の効果です。このプロパティは、要素のコンテンツ領域をオーバーフローするコンテンツがどのように処理されるかを定義します。値がスクロールの場合、ユーザー エージェントは、必要かどうかに関係なく、スクロール メカニズムを提供します。したがって、すべてが要素ボックス内に収まる場合でも、スクロールバーが表示される可能性があります。値を hidden に設定すると、コンテンツがトリミングされ、残りのコンテンツが非表示になります。

JS コードは次のとおりです。

<script>
    var main = document.getElementById(&#39;main&#39;)
    go = document.getElementById(&#39;go&#39;)
    count = document.getElementById(&#39;count&#39;);

    cols = [&#39;#1AAB8A&#39;, &#39;#E15650&#39;, &#39;#121B39&#39;, &#39;#80A84E&#39;];

    function CDiv(classname) {
        var Div = document.createElement(&#39;div&#39;)
        index = Math.floor(Math.random() * 4)
        Div.className = classname
        for (var i = 0; i < 4; i++) {
            var iDiv = document.createElement(&#39;div&#39;)
            Div.appendChild(iDiv)
        }
        if (main.children.length == 0) {
            main.appendChild(Div);
        } else {
            main.insertBefore(Div, main.children[0]);
        }

        Div.children[index].style.backgroundColor = cols[index];
        Div.children[index].className = "i";
    }

    function move(obj) {
        //默认速度与计分
        var speed = 5, num = 0;
        obj.timer = setInterval(function () {
            //速度
            var step = parseInt(getComputedStyle(obj, null)[&#39;top&#39;]) + speed;
            obj.style.top = step + &#39;px&#39;
            if (parseInt(getComputedStyle(obj, null)[&#39;top&#39;]) >= 0) {
                CDiv(&#39;row&#39;);
                obj.style.top = -150 + &#39;px&#39;;
            }
            if (obj.children.length == 6) {
                for (var i = 0; i < 4; i++) {
                    if (obj.children[obj.children.length - 1].children[i].className == &#39;i&#39;) {
                        //游戏结束
                        obj.style.top = &#39;-150px&#39;;
                        count.innerHTML = &#39;游戏结束,最高得分: &#39; + num;
                        //关闭定时器
                        clearInterval(obj.timer);
                        //显示开始游戏
                        go.children[0].innerHTML = &#39;游戏结束&#39;;
                        go.style.display = "block";
                    }
                }
                obj.removeChild(obj.children[obj.children.length - 1]);
            }
            //点击与计分
            obj.onmousedown = function (event) {
                //点击的不是白盒子
                // 兼容IE
                event = event || window.event;
                if ((event.target ? event.target : event.srcElement).className == &#39;i&#39;) {
                    //点击后的盒子颜色
                    (event.target ? event.target : event.srcElement).style.backgroundColor = "#bbb";
                    //清除盒子标记
                    (event.target ? event.target : event.srcElement).className = &#39;&#39;;
                    //计分
                    num++;
                    //显示得分
                    count.innerHTML = &#39;当前得分: &#39; + num;

                }
                else {
                    //游戏结束
                    obj.style.top = 0;
                    count.innerHTML = &#39;游戏结束,最高得分: &#39; + num;
                    //关闭定时器
                    clearInterval(obj.timer);
                    //显示开始游戏
                    go.children[0].innerHTML = &#39;游戏结束&#39;;
                    go.style.display = "block";
                }
                //盒子加速
                if (num % 10 == 0) {
                    speed++;
                }
            }
            //松开触发停止
            obj.onmouseup = function (event) {

            }

        }, 20)


    }
    go.children[0].onclick = function () {
        if (main.children.length) {
            //暴力清楚main里面所有盒子
            main.innerHTML = &#39;&#39;;
        }
        //清空计分
        count.innerHTML = &#39;游戏开始&#39;;
        //隐藏开始盒子
        this.parentNode.style.display = "none";
        move(main);
    }
</script>
ログイン後にコピー

js は、静的ページ全体を移動させる主要な部分です。実装のアイデアも非常にシンプルです。まず div 要素を取得し、div を移動させ、Div を動的に作成し、移動後に不足している div を埋め、色付きの四角形をランダムに作成し、クリック イベントをバインドし、クリックして勝敗を決定します。 、ゲーム終了後の制限、カラーブロックの底打ち処理、加速のための追加点の処理など。

長さの理由により、この記事は、白いブロックを踏まないでくださいゲームのネイティブ JS 実装の CSS および JS 部分を簡単に紹介します。その後の記事では、 js部分の実装方法です。

以上がネイティブJSで白いブロックを踏まないゲームを実装 (3)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)