我目前正在开发'C'赛车游戏。我有一个始终处于循环中的进程函数,直到game_over设置为true。在过程功能中,我有一个功能,测试汽车是否停在燃料停止旁边,一旦停放,汽车停止,燃料恢复。
我想知道自从汽车停止燃油后我怎么能算3秒,然后让游戏在3秒后恢复。
我已经尝试将当前时间存储在变量中并将“3秒”添加到该值上,并在继续之前等待时间到达此值。这显然不起作用,因为循环不断更新当前时间。
if (fuel_stop_left() || fuel_stop_right()) {
fuelRemaining = 10000;
acceleration = 0;
}
答案 0 :(得分:1)
clock_t begin;
double time_spent;
unsigned int i;
/* Mark beginning time */
begin = clock();
for (i=0;1;i++)
{
printf("hello\n");
/* Get CPU time since loop started */
time_spent = (double)(clock() - begin) / CLOCKS_PER_SEC;
if (time_spent>=3.0)
break;
}
这段代码应该可以帮助您解决问题。不要忘记在代码开头#include time.h。
答案 1 :(得分:0)
例如,您可以将计时器设置为100毫秒。然后你需要使用一个变量来计算三秒并设置一个标志。在main()
检查该标志的状态并执行您想要执行的操作,然后清除该标记。
这是一个简单的想法:
unsigned int cnt = 0;
bool isThreeSecs = false;
// Set this interrupt to 100ms
void myTimerInterrupt()
{
cnt++;
if (cnt == 30) // 100ms * 30 = 3 secs
{
isThreeSecs = true; // Set your flag here
cnt = 0; // Clear the cnt variable for next use
}
}
int main()
{
// Some stuff
if (isCarStopped()) // Check if the car has stopped
{
// Start your timer here and check your flag
if (isThreeSecs)
{
letMeGo();
isThreeSecs = false; // Clear the flag
}
}
}
实施可能因您的算法而异。例如,您可能希望在while
的{{1}}检查周围使用isThreeSecs
循环,以防止执行任何其他操作。我只想给你一个想法。