Альтернатива setInterval, которая может быть изменена в реальном времени - PullRequest
2 голосов
/ 02 мая 2019

Я работаю над игрой со змеями для задания, в котором змея должна увеличивать свою скорость, когда она "ест".

Я использовал 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);

1 Ответ

4 голосов
/ 02 мая 2019

Назначение setInterval переменной позволяет использовать clearInterval, чтобы очистить ее и использовать новую скорость:

var interval = setInterval(draw, speed);

В вашем snake:

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