2012-02-24 97 views
1

我想在C++中做一個基本的蛇遊戲,我用orl [x]和ory [y]數組做了一個基本的網格,現在我試圖添加這個蛇。在C++代碼中指定的某個等待時間之後執行某些操作?

基本上我想蛇移動,直到按下某個鍵並一次移動一個數組。我試過用定時器以外的東西,但它立即執行。我需要一個計時器,以便蛇每秒鐘持續這樣做,直到按下一個鍵。如果你玩過蛇,你確切地知道我的意思。

我需要在C++中創建一個計時器,但我不想通過創建一個計時器來實現ENORMOUS代碼,並且不能從我自己的代碼中理解任何東西。我希望儘可能簡單。

任何想法我可以做到這一點?我看着時間頭文件庫,但沒有發現任何有用的東西。

+1

等待?相關問題:你如何在屏幕上繪製蛇? – 2012-02-24 18:28:32

+0

你可以很容易地使用[ctime](http://www.cplusplus.com/reference/clibrary/ctime/difftime/)來處理很多簡單的死定時器類。 – David 2012-02-24 18:30:03

+0

你不*製造*一個計時器..對於純C/C++的立場,它甚至不可能。你必須使用一些系統API /系統調用/ ... – 2012-02-24 18:30:29

回答

1

可悲的事實是標準C++並沒有真正支持這種類型的行爲。 Windows和Posix都支持睡眠功能,可以讓你做到這一點。對於更高級別的解決方案,您可以查看Boost :: Threads。

+0

還有'usleep'和'select'。 – 2012-02-24 18:33:57

+1

C++ 11 does,http://en.cppreference.com/w/cpp/thread/sleep_for和。 – juanchopanza 2012-02-24 18:44:55

+0

大多數專業人員還沒有C++ 11的訪問權限,但是如果你這樣做,那麼通過一切手段。 – Joel 2012-02-24 18:46:26

1

如果你在linux上,可以使用「time.h」
這是一個等待幾秒鐘的快速函數。
如果您願意,可以將其修改爲幾毫秒。
另外,你使用的是ncurses庫嗎?

#include <iostream> 
#include <cstdlib> 
#include <time.h> 

void SleepForNumberOfSeconds(const int & numberofSeconds); 

int main(){ 

    std::cout << "waiting a second.." << std::endl; 
    SleepForNumberOfSeconds(1); 
    std::cout << "BOOM!" << std::endl; 

    std::cout << "waiting 5 seconds.." << std::endl; 
    SleepForNumberOfSeconds(5); 
    std::cout << "AH YEAH!" << std::endl; 

    return EXIT_SUCCESS; 
} 

void SleepForNumberOfSeconds(const int & numberofSeconds){ 

    timespec delay = {numberofSeconds,0}; //500,000 = 1/2 milliseconds 
    timespec delayrem; 

    nanosleep(&delay, &delayrem); 

    return; 
} 
+0

我會盡力,謝謝。 – Bugster 2012-02-24 18:36:46

+0

http://stackoverflow.com/questions/7827062/is-there-a-windows-equivalent-of-nanosleep – 2012-02-24 18:38:09

0

如果您使用的是windows,請查看SetWaitableTimer windows api調用。 我無法提供一個例子,因爲我現在在iPad上,但它可以滿足您的需求。

祝你好運!

1

我添加了這個答案,因爲目前還沒有C++ 11的答案。

你可以做平臺無關使用std::this_thread::sleep_for

void millisecond_wait(unsigned ms) 
{ 
    std::chrono::milliseconds dura(ms); 
    std::this_thread::sleep_for(dura); 
} 
您使用的是什麼操作系統
相關問題