我想为我的控制台应用程序制作“引擎”,它将计算经过的时间,并在经过一定时间后强制应用程序执行基于时间的事件。我考虑为教育目的创建一个简单的基于文本的策略游戏(不是为了家庭作业,只是为了我)。
我试图创建引擎,但我没有走得太远。我不知道如何应用基于时间的事件来中断应用程序中当前待处理的操作等,首先是我如何做到的:
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
void _sleep(int t);
int main()
{
int seconds_passed = 0; //counts how much time passed since application started
while(1)
{
//if(seconds_passed == 100) ... time based action
_sleep(1000);
printf("test");
seconds_passed += 1;
}
return 0;
}
void _sleep(int t)
{
int i;
for (i = 0; i < (t/100); i++)
{
Sleep(100);
if (kbhit()!= 0)
{
getch();
break;
}
}
}
我试图从 windows.h 中创建类似于 Sleep() 的功能,但能够在按下键时打破延迟(我不知道我是否走正确的方式) - 在循环中它将开始“时间流逝”,但我希望它独立于其余代码,因此它将静默工作并控制其余代码中的操作。我在以下任何事情上都需要帮助:
- 使用键盘中断 _sleep() 函数不应自动增加“经过的秒数”
-如何使计时器独立于代码中发生的动作?我考虑过创建一些可以每秒破坏整个 while(1) 循环的东西(可能是我修改后的 _sleep 函数),增加计数器并返回它破坏的代码部分(它会滥用 scanf() 应用程序中的操作但现在不是问题)
-我听说 select() 函数可能在这里有用,有人对此有任何经验,可以告诉我更多信息吗?