[英]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.x
和food.y
,而它們從未在循環內更新:
if (snake[i].x === food.x && snake[i].y === food.y) {
我相信您想將其與randomX
和randomY
進行比較:
if (snake[i].x === randomX && snake[i].y === randomY) {
根據food
坐標的值,您的功能可能會導致無限循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.