回答編集履歴

1 例を追加

BeatStar

BeatStar score 1266

2018/07/21 17:02  投稿

私ならタイマー系のやつを使いますね。
オープンフレームワークスとやらは使っていないのでわかりませんが、
```ここに言語を入力
タイマー設置
-> 指定の時間( 10秒後とか ) にタイマーがヒット
-> タイマーを破棄
次のステージへ
```
みたいにする。
Windows API だと SetTimerだったかな。それでタイマーをセットして、指定の秒数後? に WM_TIMER が発行されるからそこに「時間切れ」系の処理を記述。その直後にKillTimerだったはずだけどそれで破棄。
みたいに。
URL: [タイマー - Windows API 入門](http://wisdom.sakura.ne.jp/system/winapi/win32/win47.html)
これをもとに考えてみると、たぶん、タイマーをセットしたり解除したりするクラスと イベントハンドラに相当するやつがあって、それを使うんじゃないかなと。
それか、単純に
**while文と 現在時刻の取得 を組み合わせて**、
開始前に現在時刻を取得 ( 変数 beginning ) して、whileでループしながら beginningと現在時刻の差が N秒 (つまり N秒後) までループ。
このwhileから抜けたなら、「制限時間内に正解(迷路系ならゴールまで辿り着いた)した」か「制限時間を超えた」なのでフラグかなんかで管理するとか?
```C++  
// あくまでイメージ.  
 
// 時間系のクラスが用意されていて、Timeクラスだとする  
Time beginning = Clock::NowTime();  
bool flag = true;  
 
while( true ){ // 無限ループ  
      Time now = Clock::NowTime();  
      if( now - 10 == beginning ){ // 現在時刻の10秒前が beginningの値と一緒  
          flag = false;  
          break;  
     }  
}  
 
// この時点でwhileは抜けているから条件分岐  
if( flag ){  
      // 制限時間内にゴールしたり、正解したり等  
}else{  
      // 制限時間を超えた場合の処理 ( "ゲームオーバー!"と表示するとか? )  
}  
```  
 
みたいに。  
 
ぱっと思いつくのだとこれぐらい。
もうちょっと煮詰める必要はありますが。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る