我想爲我的控制檯應用程序製作「引擎」,它將計算時間並強制應用程序在經過一定時間後執行基於時間的事件。我想爲教育目的創建一個簡單的基於文本的戰略遊戲(不是爲了家庭作業,只爲我)。控制檯基於時間的引擎
我試圖創建引擎,但我沒有做太多。我不知道我該怎麼申請目前基於時間的事件破未決應用等動作,首先這裏是我如何做它:
#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