簡體   English   中英

我的腳本運行時Google Chrome凍結

[英]Google Chrome freezes when my script is running

內容:我正在制作流行游戲Snake的一個版本。 當我嘗試避免食物出現在蛇形部位的同一位置時,我遇到了一些問題。

因此,我使用Phaser框架生成了以下代碼:

generateFood: function() {
        var randomX, randomY;
        var rightLocation = false;
        var foodOnSnake = false;

        while(rightLocation === false) {
            randomX = Math.floor(Math.random() * (this.game.width / squareSize)) * squareSize;
            randomY = Math.floor(Math.random() * (this.game.height / squareSize)) * squareSize;
            foodOnSnake = false;

            for (var i = 0; i < snake.length; i++) {
                if (snake[i].x === food.x && snake[i].y === food.y) {
                    foodOnSnake = true;
                    break;
                }
            }

            if(foodOnSnake === false) {
                rightLocation = true;
            }
        }
        food = this.game.add.sprite(randomX, randomY, 'snake', 15);
    }

目的是在游戲上創建一些隨機坐標。 而且,當食物在蛇的一部分(for循環)上生成時,我將生成其他坐標。 但是由於未知的原因,在我的蛇被吃掉后,游戲崩潰了,並且谷歌瀏覽器的標簽沒有響應。 我認為循環存在錯誤,但找不到。

您將蛇段的坐標與food.xfood.y ,而它們從未在循環內更新:

if (snake[i].x === food.x && snake[i].y === food.y) {

我相信您想將其與randomXrandomY進行比較:

if (snake[i].x === randomX && snake[i].y === randomY) {

根據food坐標的值,您的功能可能會導致無限循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM