用c++制作计时器
Making a Timer in c++?
我正在用c++开发一个简单的游戏,一个逐点游戏,你必须点击显示器上的一个画好的圆圈,然后每次点击都会跳到另一个随机位置,但我想让游戏在60秒左右结束,将分数写入文本文件,然后在启动程序时从文本文件中读取并将信息存储到数组中,并以某种方式重新排列以创建高分表。我想我可以自己计算出高分和鼠标在某个区域的点击,但我完全被创建一个可能的计时器所困扰。感谢您的帮助,干杯!
在C++11中,可以轻松访问计时器。例如:
#include <chrono>
#include <iostream>
int main()
{
std::cout << "beginn";
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 << "endn";
}
您的平台可能支持<chrono>
,也可能不支持。有一个<chrono>
的boost实现。
如果不参考特定的框架甚至操作系统,这是无法回答的。
SDL中有SDL_GetTicks()
。
在linux上,有通用的clock_gettime
或gettimeofday
,应该可以在任何地方工作(但要注意细节(。
Win32 API有几个与此相关的函数调用,包括Timer回调机制,如GetTickCount
、Timers
等。(文章(
使用定时器通常与"空闲"处理的模因密切相关。因此,您也需要搜索该主题(这就是消息泵的作用所在,因为消息泵决定何时(例如(发送WM_IDLE
消息;Gtk有一个类似的Idle hook概念,我认为几乎每个UI框架都有(
通常GUI程序有所谓的"消息泵"循环。检查计时器应该是你循环的一部分:
while(running)
{
if( current_time() > end_time )
{
// time is over ...
break;
}
if( next_ui_message(msg) )
dispatch(msg);
}
试试这个:
//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++;
}
}
- 有关详细信息,请访问:http://www.programmingtunes.com/creating-timer-c/#sthash.j9WLtng2.dpuf
相关文章:
- Linux的Cpp上的计时器
- 提升 ASIO 无法识别计时器对象
- 提升 asio 并发计时器取消问题与链
- 使用单体计时器的pthread_cond_timedwait有时会比预期晚超时
- 窗口中的微秒计时器
- 计时器是否从另一个线程启动?
- 如何在 c++ 中创建计时器
- C++回调计时器实现
- 在计时器或主线程外部的命令上销毁/替换线程
- 如何制作每秒从 30 乘 1 倒计时的计时器?
- 保留计时器集合(对象与指针)的最佳方法
- 在网络套接字计时器滴答后增加asio短读错误
- 是否可以仅使用标准 c++/c++11 实现不带"sleep"的计时器?
- 在没有NtSetTimerResolution的Windows上提高计时器分辨率(高分辨率)
- 计时器坏了或者其他什么的
- 功能计时器阻止主功能继续
- IO服务重新启动后,Boost最后期限计时器持续触发
- boost asio计时器是否会在"取消"时阻塞
- Poco 计时器,具有来自同一类的回调
- 使计时器在C++进程中的特定时间关闭,以便同步两个进程