Я пишу игровое приложение Snake для практики.
У меня есть функция changeDirection, которая устанавливает соответствующее направление в состояние по щелчку стрелки:
changeDirection = event => {
const { direction } = this.state;
const keyPressed = event.keyCode;
if (keyPressed === keyCodes.LEFT_KEY && direction !== "right") {
this.setState({ direction: "left" });
}
if (keyPressed === keyCodes.UP_KEY && direction !== "down") {
this.setState({ direction: "up" });
}
if (keyPressed === keyCodes.RIGHT_KEY && direction !== "left") {
this.setState({ direction: "right" });
}
if (keyPressed === keyCodes.DOWN_KEY && direction !== "up") {
this.setState({ direction: "down" });
}
}
, и она работает нормально, но проблема в другой функции.Я обновляю положение головы змеи, основываясь на состоянии направления.и эта функция выполняется каждые 1 секунду (с помощью setInterval), и когда направление изменяется, голова змеи не меняет свое направление сразу.Он делает это на следующем ходу.
Я понял, что это потому, что новое состояние направления еще не установлено, когда змея движется впервые, но я не знаю, как это исправить.
вот репо: https://github.com/Dito-Orkodashvili/snake