C++を使用して実際の時間がかかる実際のシナリオをシミュレートしようとしています。forループを使用して、時間を5分単位で分割しています。
forループの1つのステップだけを毎秒実行するようにプログラムに指示する方法があるかどうか知りたいですか?このようにして、プログラムは「監視可能」になります。
現在の時刻を取得し、頻度を追加し、アクチンを実行して、計算された時刻まで待ちます。そのようです。
#include <thread>
#include <chrono>
//...
while(whatever_condition()) {
auto next=std::chrono::system_clock::now()
+std::chrono::seconds(1);
do_whatever();
std::this_thread::sleep_until(next);
}
http://en.cppreference.com/w/cpp/thread/sleep_until
プレーンな「sleep」および「usleep」関数の使用は非標準であり、操作にかかる時間は考慮されないことに注意してください。
編集:これはc ++ 11ソリューションですが、C ++ 11ブーストがない場合は、C++98および03にもこの機能が提供されます。sleep
スリープすると、プログラムを待機させることができます。これがあなたの意図したものかどうかはわかりません。したがって、1秒待つには、次のように入力します。
睡眠(1000)
一定の速度で実行することはどれほど重要ですか?sleep()
これを行うための1つの可能な方法ですが、sleep
正確なタイムスライスを提供するにはかなり不十分です。もちろん、ゲームは常にこれを行う必要があるため、ゲームプログラマーはこれを行うためのさまざまな方法を検討してきました。ここで、ゲームループを実装する方法についての説明を見つけることができます。中心的な理論は、タイマーを定期的にチェックし、1秒あたりの必要なフレーム数に応じて更新することです。