可以实时更改的 setInterval 的替代方法

Alternative to setInterval that can be altered live

我正在为一项任务开发贪吃蛇游戏,蛇在 "eats" 时必须提高速度。

我用 setInterval 画蛇,但现在我不得不逐渐提高速度,我有点迷路了。我也尝试过 setTimeout,但我不明白如何正确使用它。

//when the snake "eats"

if (snakeX == food.x && snakeY == food.y){
    food = {
        x : Math.round(Math.random()*(cvsWidth/snakeWidth-1)),
        y : Math.round(Math.random()*(cvsHeight/snakeHeight-1))
    };
    score++;
} else {
    //Remove last
    snake.pop();
}
//speed
var speed = 100;
setInterval(draw,speed);

setInterval分配给一个变量允许您使用clearInterval清除它并使用新的速度:

var interval = setInterval(draw, speed);

在你的snake中:

score++;
speed++; //Or wherever you add to speed
clearInterval(interval);
interval = setInterval(draw, speed);