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

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

藏色散人
藏色散人オリジナル
2018-12-28 14:06:325063ブラウズ



前回の記事「Native JSで白いブロックを踏まないゲームを実装(5)」 ) 「」では、ゲームのソースコード内の CDiv メソッドを分析しました。そこで、このセクションでは引き続き、移動方法を紹介します。

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

関連する js コード部分を組み合わせて、「白いブロックを踏まないでください」ゲームの移動と速度の実装方法を紹介します。

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

function move(obj) {
    //默认速度与计分
    var speed = 5, num = 0;
    obj.timer = setInterval(function () {
        //速度
        var step = parseInt(getComputedStyle(obj, null)['top']) + speed;
        obj.style.top = step + 'px'
        if (parseInt(getComputedStyle(obj, null)['top']) >= 0) {
            CDiv('row');
            obj.style.top = -150 + 'px';
        }
        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)


}

上記のコードでは、移動メソッドを定義します。この移動メソッドは、ゲームの動的実行とタイミングの機能を実装するために使用されます。得点。

たとえば、次のコードをコメントアウトしてフォアグラウンドで実行すると、クリックしてゲームを開始すると、ゲーム領域が表示されることがわかります。クリックしてもしなくても、何も反応しません。たとえ白いブロックをクリックしても、ゲームの終了は表示されず、下に移動し続けます。次に、このコードは、ゲームの開始と終了を決定するために使用されます。

ネイティブJSで白いブロックを踏まないゲームを実装 (6)別の例として、上記のコードのクリックとスコアのコードをコメント化します。

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]);
        }

ゲームの開始後、クリックすることがわかります。ゲームエリア内にクリック採点機能が表示されなくなります。

ネイティブJSで白いブロックを踏まないゲームを実装 (6)#したがって、これら 2 つのコード部分の機能については、誰もがすでに理解していると思います。記事が長いため、後の記事で具体的なコード実装方法を分析していきます。



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

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