// specialized type of clock.
CuTimer _Timer;
while(1)
{
_Timer.Make_Tick_Data();
if( _Timer.GetTimeOut(9) )
....
_Timer.Tick_Data_Clear();
}
// CuTimer.h
class CuTimer
{
public:
BOOL GetTimeOut(int i); // table_1
void Make_Tick_Data();
void Tick_Data_Full();
void Tick_Data_Clear();
CuTimer();
~CuTimer();
private:
DWORD More_Time[20];
DWORD lastTickCount[20];
BYTE Time_move[20];
DWORD thisTickCount;
};
// CuTimer.cpp
CuTimer::CuTimer(void)
{
this->Tick_Data_Clear();
}
CuTimer::~CuTimer(void)
{
}
void CuTimer::Tick_Data_Clear()
{
memset( Time_move, 0, sizeof Time_move );
}
void CuTimer::Tick_Data_Full()
{
memset( Time_move, 1, sizeof Time_move );
}
void CuTimer::Make_Tick_Data()
{
static DWORD delay[20] = {
10, //0 , 1/100 sec 0.01
16, //1 , 1/60 sec 0.016
17, //2 , 1/56 sec 0.017
20, //3 , 1/48 sec 0.020
25, //4 , 1/40 sec 0.025
33, //5 , 1/30 sec 0.033
41, //6 , 1/24 sec 0.041
62, //7 , 1/16 sec 0.062
83, //8 , 1/12 sec 0.083
125, //9 , 1/8 sec 0.125
166, //10, 1/6 sec 0.166
250, //11, 1/4 sec 0.250
333, //12, 1/3 sec 0.333
500, //13, 1/2 sec 0.5
1000, //14, 1 sec
2000, //15, 2 sec
3000, //16, 3 sec
4000, //17, 4 sec
5000, //18, 5 sec
8000 //19, 8 sec
};
thisTickCount = GetTickCount();
for (int i = 0; i < 20; i++)
{
if( (thisTickCount - lastTickCount[i]) >= delay[i])
{
More_Time[i] = (thisTickCount - lastTickCount[i]) - delay[i];
lastTickCount[i] = thisTickCount;
if( More_Time[i] < 30 )
lastTickCount[i] -= More_Time[i];
Time_move[i]++;
}
}
}
BOOL CuTimer::GetTimeOut(int i)
{
return (BOOL)Time_move[i];
}
2010年1月21日 星期四
CuTimer - specialized type of clock.
訂閱:
張貼留言 (Atom)
寫 貪吃蛇, 俄羅斯小遊戲, 用這種小計時器非常的方便.
回覆刪除