首页 > 解决方案 > SFML 秒计数器

问题描述

我正在使用 SFML 库制作游戏,我想实现一个功能,显示自程序运行以来屏幕上的秒数,并且它会增加直到窗口关闭。我试过这个:

sf::Clock clock;
while (window.isOpen())
{
    sf::Time elapsed = clock.restart();
    updateGame(elapsed);

}

但我不知道它是如何工作的,或者即使它是正确的功能。到目前为止,这是我的代码https://github.com/basmaashouur/GamesLib/blob/master/cards/main.cpp

标签: c++sfml

解决方案


有多种方法可以获得秒数。

首先,您可以sf::Clock为此使用永远不会重置的独占:

sf::Clock clock;

const unsigned int seconds = static_cast<unsigned int>(clock.getElapsedTime().asSeconds());

作为替代方案,您可以使用 ansf::Time来累积帧之间的时间(例如,在您的updateGame()函数内部):

sf::Clock clock;
sf::Time time;

time += clock.restart();

const unsigned int seconds = static_cast<unsigned int>(time.asSeconds());

推荐阅读