Problem beim Tastatureinlesen
-
Folgende Funktion soll einen Reaktionstest darstellen, mit einer Ampel die von rot auf grün springt durch einen Eingabe wird die Reaktionszeit ermittelt, mein Problem ist, dass wenn ich zu Beginn der Funktion eine Taste drücke wird die Reaktionszeit auf null gesetzt. Die Tastatur soll aber erst eingelesen werden wenn die Ampel auf grün springt.
double ampel(void) { double duration_c; int gdriver=DETECT,gmode; int random; char zk[]="Bitte Taste druecken sobald die Ampel auf gruen umspringt"; // Init Grafik und Layout initgraph(&gdriver,&gmode,""); settextstyle(3,0,1); outtextxy(70,0,zk); setcolor(4); //rote Ampel pieslice(150,200,0,360,50); pieslice(300,200,0,360,50); pieslice(450,200,0,360,50); setcolor(2); srand( (unsigned)time( NULL ) ); // Initialisiert den Random-Generator mit der akt. Zeit in Sek random = MIN_T + rand()%(MAX_T - MIN_T); delay(random); //Ampel springt auf grün pieslice(150,200,0,360,50); pieslice(300,200,0,360,50); pieslice(450,200,0,360,50); clock_t start_c, finish_c; start_c = clock(); fflush(stdin); getch();//Tastatureingabe finish_c = clock(); duration_c = (double)(finish_c - start_c)/(CLOCKS_PER_SEC); cout <<"Reaktionszeit= "<<duration_c<<" s\n\n"; return duration_c; }
Hat irgendjemand vielleicht ne Ahnung wie ich das hinbekommen könnte?
-
Eingabepuffer leeren.
edit:
#include <iostream> std::cin.sync();
mfg