Как использовать часы в цикле

Я пишу код игры, и я пытался реализовать функциональность игры с паузой, при которой, когда пользователь нажимает R, игра приостанавливается, а через x раз, когда R нажимается снова, игра возобновляется. Я заставил это работать, когда пользователь нажимает R, и когда нажимается любая другая клавиша, такая как M, игра возобновляется как обычно. Однако, когда я назначаю R событиям паузы и паузы, начальный R обнаруживается как для паузы, так и для паузы, и игра останавливается на доли секунды и возобновляется. Я пытался реализовать таймеры и счетчики внутри моего цикла паузы, но безрезультатно. то, что я действительно хочу сделать, это сделать так, чтобы пользователь должен был ждать x количество времени, прежде чем снова нажать R, это решит проблему, но я не могу получить clock.getElapsedTime работать в цикле по какой-то причине. Почему это? вот мой текущий код:

case sf::Keyboard::R:
pause = true;
break;//pause game
clock1.restart();
while (pause)
{
//cout << clock1.getElapsedTime.asSeconds();

//if (clock1.getElapsedTime.asSeconds() > 1.0)
//{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::R))
pause = false;
//}
}

0

Решение

Попробуйте разместить SF :: сна (SF :: секунды (0,1)); ДО вашего цикла. У меня такая же проблема. Каким-то образом, если бы я прочитал значение isKeyPressed () для той же буквы, следовательно, он не изменился бы во время второго чтения и предположил, что он все еще нажат. Небольшая пауза там решила мою проблему, так что попробуйте, если она решит ее в вашем случае.

пожалуйста подскажите если получится, мне интересно

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]