- ベストアンサー
C言語 一定時間計る
C言語で、今クイズを作っています。 プレイヤーに考える時間を与え、その時間が経過したら自動的に不正解というようなソフトを作りたいです。 ただし、この場合一定時間、処理を停止させるのではなく、プレイヤーの入力を待ちながら処理を停止させ、一定時間終わると自動で次の処理(次の問題の表示)に移るようにしたいです。 サンプルソースなどもあればうれしいです。環境はBCCです。回答よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
キー入力は、getkb(), getch()を使い、時間計測は、GetTickCount()を使い、これらを組み合わせれば要件を満たしたプログラムが作成出来ると思います。 簡単なサンプルですが参考程度に載せておきます。 #include <stdio.h> #include <stdlib.h> #include <windows.h> #define Q_MAX 10 #define TIMER_MAX 10 void main(void) { int i = 1; int key = 0; long tm; int LoopFlg = 0; printf("第%d問\n",i); tm = GetTickCount(); // カウント開始 while(LoopFlg == 0) { if (kbhit() != 0) // キーが押されたかチェック { key = getch(); // 押されたキーを取得 switch(key) { default: // ESCキー以外が押されると次の問題へ i++; printf("第%d問\n",i); tm = GetTickCount(); // カウントをリセット break; case 0x1B: // ESCキーで終了 LoopFlg = 1; break; } } // 時間切れで次の問題へ(10秒) if((GetTickCount() - tm) >= (TIMER_MAX*1000)) { i++; printf("時間切れ\n第%d問\n",i); tm = GetTickCount(); // タイムアップでカウントをリセット } // 問題数を超えたら終了 if (i >= Q_MAX) LoopFlg = 1; } }
お礼
丁寧にサンプルソースまでありがとうございます。 時間の測定はGetTickCount()を使えばいいんですね! わかりやすかったです。