リアルタイムな処理

// X2secGame2秒間で答えないとゲームオーバー

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

void main(void)
{
	int key ;
	double startTime, endTime, totalTime ;
	
	printf("信号の一番右は?\n1)青 2)赤 3)黄 ----> ") ;
	startTime = clock() ;
	
	while (1) {
		if ( kbhit() ) {				// キー入力がされたら判定
			key = getch() ;
			printf("%c\n", key ) ;
			break ;
		}
		
		endTime = clock() ;
		totalTime = endTime - startTime ;
		
		if ( totalTime > 2000.0 ) {		// 2秒経過したらタイムオーバー
			goto TIMEOVER ;
		}
	}
	
	if ( key == '2' ) {
		printf("正解!\n") ;
	}
	else {
		printf("ぶっぶー!\n") ;
	}
	exit(EXIT_FAILURE) ;
	
TIMEOVER:
	printf("\n時間切れ!\n") ;

}
/*
	補足
		kbhit()関数はキーボードが押されたかどうかを判定する関数です。
		
		while(1)で無限ループにしておき、常にkbhit()関数を使ってキーが押されたかを
		判定するようにしています。
		キーが押された場合はループを抜け、どのキーが入力されたかによって正解と不正解を
		判定します。
		また、問題表示後から

			printf("信号の一番右は?\n1)青 2)赤 3)黄 ----> ") ;
			startTime = clock() ;

		経過時間を求め、

			endTime = clock() ;
			totalTime = endTime - startTime ;

		経過時間が2000ミリ秒(2秒)を超えた場合はタイムオーバーとし不正解扱いとなります。

			if ( totalTime > 2000.0 ) {
				goto TIMEOVER ;
			}
		
*/

コメント