Все есть в названии 🙂
Зачем мне это нужно:
Я создал небольшую играбельную судоку на C ++ с помощью Qt. Я сделал классический метод возврата, чтобы решить эту проблему. Пользователь может видеть прогресс разрешения в режиме реального времени. Я поставил слайдер, позволяющий пользователю регулировать скорость разрешения.
Вот что я положил в начале метода разрешения, чтобы замедлить процесс:
sleep_for(milliseconds(delay)); //delay is a toggleable static variable
НО, поскольку пользователь запускает разрешение, он не может изменить скорость (задержку), потому что приложение спит большую часть времени.
Любой другой способ замедлить процесс?
PS: пожалуйста, извините мой грубый английский: /
Используйте timerEvent (). QObject имеет встроенную поддержку таймера. Поместите каждый игровой шаг в timerEvent () и вызовите startTimer () с необходимым интервалом. Это, безусловно, самый простой способ сделать это.
Спящий режим — это хороший способ замедлить работу приложения, так как он освобождает процессор для выполнения других задач. Если вы хотите, чтобы пользователь мог изменять скорость, вы должны делать это в отдельном потоке, когда это время изменяется, прерывая спящий режим. нить и установить новую задержку.
Ну, вы делаете цикл и вызываете функцию рисования / записи через набор интервалов
int interval = 0;
while(running){
interval++;
if(interval == 60){
draw();
}
}
или с помощью сна включив Windows.h
int fps = 1000/30;
while(running){
Sleep(fps);
draw();
}
или объединяя их
int fps = 1000/30;
int interval = 0;
while(running){
interval++;
Sleep(fps);
if(interval == 30){//every more or less 1 sec
draw();
}
}