我正在用C++開發一個簡單的遊戲,一個追逐點式的遊戲,你必須在顯示屏上點擊一個繪製的圓圈,然後每次點擊跳轉到另一個隨機位置,但是我想讓遊戲結束在60秒左右之後,將分數寫入文本文件,然後啓動從文本文件讀取的程序並將信息存儲到數組中,並以某種方式重新排列它以創建高分表。 我想我可以自己計算出某個區域的高分和鼠標點擊,但我完全停留在創建一個可能的計時器。 任何幫助表示讚賞,歡呼!在C++中製作計時器?
回答
通常GUI程序有所謂的「消息泵」循環。檢查該計時器應該是你的循環的一部分:
while(running)
{
if(current_time() > end_time)
{
// time is over ...
break;
}
if(next_ui_message(msg))
dispatch(msg);
}
可能不是。您應該可以通過您的OS /框架創建一個計時器,並讓它向您發送事件。 – 2011-04-24 21:23:38
對於unapersson:如果你知道OS /框架,那麼 - 「是」,你可以使用OS原語。 在提出問題的方式,我相信我的答案是足夠的。 在SDL中,例如,這是他們如何在那裏執行[空閒]定時器的方式。 – 2011-04-24 22:40:50
事件輪詢可以與SDL一起使用,但GUI程序通常使用回調。 – 2011-04-25 00:11:22
沒有參考特定的框架甚至操作系統,這是無法回答的。
在SDL中有適合目的的SDL_GetTicks()
。
在Linux上,有一般用途clock_gettime
或gettimeofday
應該在任何地方工作(但要注意細節)。
的Win32 API具有與此相關的幾個函數調用,包括定時器回調機制,如GetTickCount
,Timers
等(article)
使用定時器通常密切相關的「空閒」處理的模因。所以你也想要搜索這個話題(這是消息泵進來的地方,因爲消息泵決定何時(例如)WM_IDLE
消息發送; Gtk有一個類似的空閒鉤子概念,我估計很多每個UI框架)
在C++ 11中,可以輕鬆訪問定時器。例如:
#include <chrono>
#include <iostream>
int main()
{
std::cout << "begin\n";
std::chrono::steady_clock::time_point tend = std::chrono::steady_clock::now()
+ std::chrono::minutes(1);
while (std::chrono::steady_clock::now() < tend)
{
// do your game
}
std::cout << "end\n";
}
您的平臺可能支持或不支持<chrono>
。 <chrono>
有一個boost的實現。
回答關於文字操作符的另一個問題:我最初認爲'operator「」_Foo「沒有問題,但是現在看來在第17.6.4.3節的庫中使用」name「似乎包含宏? (而不是3p4的「名稱」的核心定義)。它以「C++標準庫保留以下類型的名稱:...宏,...」開頭。這似乎將用戶限制在下劃線之後的小寫/數字文字後綴,因爲一些隨機宏可能會將'_Foo'替換爲隨機的東西。 – 2011-04-25 15:13:22
同意。他們只能有一個領先的下劃線。真的很遺憾,我們沒有對宏進行某種範圍的確定。 – 2011-04-25 18:01:18
試試這個:
//Creating Digital Watch in C++
#include<iostream>
#include<Windows.h>
using namespace std;
struct time{
int hr,min,sec;
};
int main()
{
time a;
a.hr = 0;
a.min = 0;
a.sec = 0;
for(int i = 0; i<24; i++)
{
if(a.hr == 23)
{
a.hr = 0;
}
for(int j = 0; j<60; j++)
{
if(a.min == 59)
{
a.min = 0;
}
for(int k = 0; k<60; k++)
{
if(a.sec == 59)
{
a.sec = 0;
}
cout<<a.hr<<" : "<<a.min<<" : "<<a.sec<<endl;
a.sec++;
Sleep(1000);
system("Cls");
}
a.min++;
}
a.hr++;
}
}
- 1. 在Qt中製作倒數計時器
- 2. GTK計時器 - 如何在一幀內製作計時器
- 3. JAVA製作時間擺動計時器
- 4. 如何在asp.net web應用程序(C#)中製作倒數計時器?
- 5. C#中更新計時器
- 6. 設計set_flash_message!不在定製設計控制器中工作
- 7. Cocos2d,如何製作分數計時器
- 8. 不使用NSTimer製作計時器(swift)
- 9. Sigabrt swift Xcode(製作計時器)
- 10. 如何製作倒計時器Java
- 11. 如何製作倒數計時器?
- 12. 在Android中處理計時器控制
- 13. 計時器無法正常工作? C#
- 14. 如何在c#中暫停計時器?
- 15. C#在Backgroundworker中使用計時器
- 16. 在C#中使用計時器線程
- 17. 如何在C#中設置計時器?
- 18. 在C#中使用計時器#
- 19. 在新線程中的C#計時器
- 20. 如何在C#中創建計時器?
- 21. 在控制檯應用程序中工作的計時器
- 22. 如何在php/javascript中製作計時器和提醒
- 23. 在SWIFT中製作合法倒計時器
- 24. 如何在MATLAB指南中製作倒數計時器?
- 25. 如何使用NSDate或NSCalendar製作計數器或計時器?
- 26. 關於(倒計時)在asp.net中應用的計時器c#
- 27. 計時器無法在Vb.net中運作
- 28. 倒計時計時器在Safari中不工作
- 29. C++計算器中的整數限制
- 30. 計時器在控制檯應用程序C#的.NET
我想這將是問題的提與平臺類型。時鐘是硬件功能,訪問它是依賴於平臺和庫。例如。 linux,Win32? SDL,控制檯? etc – sehe 2011-04-24 20:39:31