2016-02-12 125 views
0

我正在編寫一個遊戲,我一直在嘗試實現一個暫停遊戲功能,當用戶按下R時遊戲會暫停,在x時間後再次按R ,遊戲將恢復。當用戶按下R時,我已經得到了這個工作,當按下其他任何按鍵(如M)時,遊戲將恢復正常。但是,當我將R分配給暫停事件和非暫停事件時,會檢測到初始R的暫停和非暫停事件,並且遊戲暫停一小會兒並恢復。我嘗試過在我的暫停循環中實現定時器和計數器,但無濟於事。我真正想要做的是讓用戶在再次按下R之前必須等待x時間,這樣可以解決問題,但由於某些原因,我無法在循環內工作clock.getElapsedTime。爲什麼是這樣?這裏是我當前的代碼:如何在一個while循環內使用一個時鐘

case sf::Keyboard::R: 
     pause = true; 
     break; 


//pause game 
     clock1.restart(); 
     while (pause) 
     {    
      //cout << clock1.getElapsedTime.asSeconds(); 

      //if (clock1.getElapsedTime.asSeconds() > 1.0) 
      //{ 
       if (sf::Keyboard::isKeyPressed(sf::Keyboard::R)) 
        pause = false; 
      //} 
     } 
+1

什麼的註釋行打印? – immibis

+0

它提出了一個錯誤,並不打印任何東西,如果你指的是cout語句 – agtv

+1

什麼是錯誤? – immibis

回答

1

試着將SF ::睡眠(SF ::秒(0.1));在你的while循環之前。我有同樣的問題。不知何故,如果我讀同一個字母的isKeyPressed()的值,那麼當我第二次讀它時它就不會改變,並且會認爲它仍然被按下。稍微停頓一下解決了我的問題,所以試試它是否能解決你的問題。

告訴我,如果它的作品,我很感興趣

+0

我已經得到它的工作,我聽說,在遊戲中放入睡眠會減慢速度,但thx的迴應!我會選擇你作爲最佳答案 – agtv

+0

由於睡眠並不經常發生,因此它不會太慢,因爲程序無論如何都在等待人類的反應,而且通常不會那麼快。 – Liza

+0

你可以分享你的修復方法嗎? – Liza