我想为我的控制台应用程序制作“引擎”,它将计算时间并强制应用程序在经过一定时间后执行基于时间的事件。我想为教育目的创建一个简单的基于文本的战略游戏(不是为了家庭作业,只为我)。控制台基于时间的引擎
我试图创建引擎,但我没有做太多。我不知道我该怎么申请目前基于时间的事件破未决应用等动作,首先这里是我如何做它:
#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()函数不应该自动增加“传递秒”量
- 如何使计时器独立行动的代码发生的事情?我想创建一些可以在每秒钟循环(1)循环(可能是我修改的_sleep函数)的情况下创建一些东西,增加计数器并返回到破坏的代码部分(它会在应用程序中滥用scanf()但它现在不是问题)
-I听说select()函数可能在这里可能有用,任何人有任何经验,可以告诉我更多?
select()将是unix下的正确答案,仅适用于windows适用于套接字SleepEx()? – loreb