я делаю игру Snake на C ++ с SDL2.Когда змея движется вправо, и пользователь нажимает клавишу со стрелкой вниз, я убираю хвост и добавляю новую головку следующим образом:
void SnakeGame::TransitionDown() {
for (SnakePart snakePart : parts) {
RemoveTail();
NewHead();
}
direction = 3;
}
void SnakeGame::RemoveTail() {
parts.erase(parts.end() - 1);
}
void SnakeGame::NewHead() {
SnakePart sp;
sp.LoadPart(GameWindow, GameRenderer, GetHeadXPosition(), GetHeadYPosition() + 18);
parts.insert(parts.begin(), sp);
}
Если я вставлю цикл for в функцию TransitionDown () иувеличьте его только на часть размера змеи, я могу видеть, что он перемещается так, как я хочу - только то, что он делает это слишком быстро!Можно ли как-нибудь убрать хвост и добавить новую голову, а затем подождать abit, прежде чем повторить?