0

ループがあり、すべてのループで、アプリケーションが実行されている現在の秒数を取得します。次に、この時間を、秒数が計算される日数、時間数、秒数に変換しますが、「リアルタイム」ではありません。 1日の秒数をカスタマイズできるので、SOとWebで例を試しましたが、これについては何もありません。私はいくつかの定義を持っています

#define DAY             1200
#define HOUR            DAY / 24
#define MINUTE          HOUR / 60
#define SECOND          MINUTE / 60

したがって、私の定義では、1日は1200秒間続きます。その後、経過秒数を「my」秒に変換しようとしています。

seconds_passed = fmodf(SECOND, (float)(GetTicks() / 1000));

これはSECONDが等しいもの(0.013889)を返しますが、すべてのループは同じであり、変更されることはありません。たとえば、1real秒を1.25fake秒に変換できると思っていました。

Minute = (seconds_passed / MINUTE);
seconds_passed = fmodf(seconds_passed, MINUTE);

アプリケーションが開始されてから何分(偽)分、(偽)時間、(偽)日が経過したかを計算します。

それが理にかなっていることを願って、あなたの時間をありがとう。

4

2 に答える 2

1

1日の秒数をカスタマイズしたいので、実際に行っているのは1秒:1秒の比率を変更することだけです。

たとえば、1日に1200秒だった場合、比率は次の
1:72
ようになります。つまり、1日に経過する1秒ごとに、72実秒に相当します。

つまり、基本的にプログラムで行う必要があるのは、1秒と1秒の比率を見つけ、経過秒数にそれを掛けて「偽の」秒を取得し、その値を使用することです...コードは次のようになります。これ:

// get the ratio second:fake_second
#define REAL_DAY_SECONDS 86400
int ratio = REAL_DAY_SECONDS / DAY;

fake_to_real = fake_second*ratio;
real_to_fake = real_second/ratio;
于 2012-04-16T03:47:51.863 に答える
0

クロノの1行で独自の期間を作成できます。

using fake_seconds = std::chrono::duration<float, std::ratio<72,1>>; 

いくつかのサンプルコード

#include <iostream>
#include <chrono>
using namespace std::chrono_literals;

using fake_seconds = std::chrono::duration<float, std::ratio<72,1>>;
 
int main()
{
    auto f_x = fake_seconds(350s);
    std::cout << "350 real seconds are:\n" << f_x.count() << " fake_seconds\n";
}

https://godbolt.org/z/f5G86avxr

于 2021-10-13T08:33:19.597 に答える