C 控制台基于时间的引擎
我想为我的控制台应用程序创建一个“引擎”,它将计算经过的时间,并在经过一定时间后强制应用程序执行基于时间的事件。我考虑创建一个简单的基于文本的策略游戏,用于教育目的(不是为了家庭作业,只是为了我自己) 我试图创造引擎,但我没有走得太远。我不知道如何在应用程序等中应用基于时间的事件中断当前挂起的操作,首先是我如何做到的:C 控制台基于时间的引擎,c,windows,function,console-application,C,Windows,Function,Console Application,我想为我的控制台应用程序创建一个“引擎”,它将计算经过的时间,并在经过一定时间后强制应用程序执行基于时间的事件。我考虑创建一个简单的基于文本的策略游戏,用于教育目的(不是为了家庭作业,只是为了我自己) 我试图创造引擎,但我没有走得太远。我不知道如何在应用程序等中应用基于时间的事件中断当前挂起的操作,首先是我如何做到的: #include <stdio.h> #include <conio.h> #include <Windows.h> void _sleep(
#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;
}
}
}
#包括
#包括
#包括
虚无睡眠(int t);
int main()
{
int seconds_passed=0;//计算自应用程序启动以来经过的时间
而(1)
{
//如果(通过的秒数==100)…基于时间的操作
_睡眠(1000);
printf(“测试”);
通过的秒数+=1;
}
返回0;
}
无效睡眠(int t)
{
int i;
对于(i=0;i<(t/100);i++)
{
睡眠(100);
如果(kbhit()!=0)
{
getch();
打破
}
}
}
我试图使函数类似于windows.h中的Sleep(),但它能够在按下键时中断延迟(我不知道我的方式是否正确)-在循环中,它将开始“时间流逝”,但我希望它独立于代码的其余部分,因此它将以静默方式工作,并控制代码其余部分的操作。我需要以下任何方面的帮助:
-使用键盘中断_sleep()函数不应自动增加“已通过的秒数”
-如何使计时器独立于代码中发生的操作?我想创建一些可以每秒中断整个while(1)循环的东西(可能是我修改过的_sleep函数),增加计数器并返回到中断的代码部分(它会在应用程序中滥用scanf()操作,但现在还不是问题)
-我听说select()函数在这里可能很有用,任何人都有使用它的经验,可以告诉我更多吗?不知道这是否是一个有用的答案,但当我构建一个简单的游戏时,我用这种方式使它成为多线程的: