一切都在标题中:)
为什么我需要这个:
我在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();
}
}