2012-04-02 68 views
0

我想獲得一個計時器來計數兩次,但我一直有麻煩它會執行它的任務一次,但不是再次,我不知道我要去哪裏錯了,我可以在互聯網上找到任何有用的信息,因爲我在以1000FPS運行的遊戲循環中運行我的代碼。不能得到一個計時器正常工作C++

這是標題代碼。

clock_t endBoost = clock() + 3.0f * CLOCKS_PER_SEC; 
clock_t slow = clock() + 5.0f * CLOCKS_PER_SEC; 

這是主碼。

bool overheat = false; 
if(overheat == false) 
{ 
    if(myEngine->KeyHeld(Key_Space)) 
    { 
     timer = clock(); 
     if(timer < endBoost) 
     { 
      stringstream outBoost; 
      outBoost << "!BOOST!"; 
      myFont->Draw(outBoost.str(), 300, 200); 
      outBoost.str(""); 
      carSpeedIncrement = 0.1f; 
     } 

    } 
} 

if(timer > endBoost) 
{ 
    overheat = true; 
} 
if(timer < slow && overheat == true) 
{ 
    overheat = false; 
    carSpeedIncrement = 0.1f; 
} 

任何幫助被讚賞。

回答

1

它看起來像你正在初始化endBoostslow並永不改變它們的值。但這些都是基於clock()值進行初始化,並且從未更改過。 timer的當前值將很快大於endBoostslow,並且將永遠保持如此。

+0

是的,如果你能給我一個關於如何解決這個問題的想法,那會很好。 – bobthemac 2012-04-02 15:33:47

+0

@MooingDuck你爲什麼編輯我的答案?我不認爲'睡眠'與原始問題有什麼關係。 – aldo 2012-04-02 22:48:07

+0

因爲你的答案很好,但缺少一個示例計時器來研究。我爲你解決了這個問題。睡眠是在非框架代碼中使用的最簡單的定時器,也是所有其他定時器的核心。 – 2012-04-02 22:50:06

-1

「我試圖讓計數器計數兩次​​」

我沒有看到任何類似於在此代碼的計數器。
你必須更清楚你的意思。

+0

我使用time.h文件中的時鐘函數作爲我的計數器。它在第一次使用它時適合適量的時間,但它不再工作 – bobthemac 2012-04-02 15:15:14

+0

@bobthemac:時鐘是一個時鐘。時鐘不是一個計時器。 – 2012-04-02 15:31:28

+0

@MooingDuck,但一個時鐘可以用作計時器,這是示例顯示它在互聯網上完成的方式。 – bobthemac 2012-04-02 15:35:17