用c++制作计时器

Making a Timer in c++?

本文关键字:计时器 c++      更新时间:2023-10-16

我正在用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_gettimegettimeofday,应该可以在任何地方工作(但要注意细节(。

Win32 API有几个与此相关的函数调用,包括Timer回调机制,如GetTickCountTimers等。(文章(

使用定时器通常与"空闲"处理的模因密切相关。因此,您也需要搜索该主题(这就是消息泵的作用所在,因为消息泵决定何时(例如(发送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