C++ zeitbegrenzte schreibmöglichkeit



  • Unter Windows sollte man ReadConsoleInput() verwenden, wenn man es richtig machen will. Oder man baut sich was mit kbhit() und getch() zusammen.



  • köntest du mir das bitte in einem Programm zeigen(Quellcode)



  • Wie man ReadConsoleInput() verwendet steht auf msdn http://msdn.microsoft.com/en-us/library/ms685035(VS.85).aspx
    Nach jedem Event prüfst du einfach ob die Zeit schon abgelaufen ist und reagierst entsprechend darauf.



  • Danke aber wie prüfe ich ob die zeit abgelaufen ist ?
    (wenn es geht würde ich das auch gerne in einem Programm sehen(Quellcode)) 🙂



  • Prüfen ob die Zeit abgelaufen ist?

    Naja - es geht vielleicht noch hübscher aber du kannst die Funktion time() aus <ctime> nutzen. Das liefert dir die Anzahl der vergangenen Millisekunden seit dem 1. Januer 1970.

    😉

    Beste Grüße
    David



  • Bitte schreibt schreibt mir das korigirte Beispiel wieder hinn !!

    #include <stdio.h>
    #include <conio.c>

    int sleep(int sec)
    [
    int wait = GetTickCount() + (1l*sec);
    while(GetTickCount() < wait);
    }

    int main()
    {
    int eingabe;

    printf("Bitte drücken sie innerhalb von einer sekunde SPACE\n");
    eingabe = getch() && sleep(100); //Das möchte ich aber gleichzeitig benutzen
    if(eingabe == 32)
    {
    printf(":-)\n");
    sleep(9999);
    }
    else
    {
    printf(":-(\n);
    sleep(9999);
    }
    }



  • Hi Bruder!

    Das kannst du auch portabler haben, guckst du:

    #include <stdio.h>
    #include <time.h>
    #include <locale.h>
    
    int main() {
    	int c = 0;
    	double duration = 0;
    	time_t start, stop;
    	setlocale ( LC_ALL, "German" );
    
    	puts ( "Drücken Sie bitte eine Taste." );
    	start = clock();
    	c = getch();
    	stop = clock();
    
    	duration = (double)( stop - start ) / CLOCKS_PER_SEC;
    	printf ("Verstrichene Zeit bis zum Tastendruck: %.3f Sekunden.\n", duration );
    
    	return 0;
    }
    

    Gruß,
    B.B.



  • Danke Big Brother

    Aber du hast mich glaub missverstanden das was du gemacht hast war so ne art Stopuhr.
    Aber ich wollte eigentlich nur das wenn man inerhalb von einer Sekunde nicht auf Space drückt oder auf eine andere Taste drückt das dann ein 😞 kommt und wenn man Space inerhalb von einer Sekunde drückt das dann ein 🙂 kommt

    könnte mir bitte mal Jemand helfen 😞



  • #include <windows.h>
    #include <conio.h>
    #include <stdio.h>
    
    #define MILLISEC_UNITS 10
    #define BLANK ' '
    #define HAPPY "\n:-)"
    #define SAD "\n:-("
    
    int main( void )
    {
    	int i = MILLISEC_UNITS-1, n = 0;
    	unsigned char count_down[MILLISEC_UNITS+1] = {0};
    	memset ( count_down, 219, MILLISEC_UNITS );
    
    	puts ( "Druecken Sie innerhalb einer Sekunde die Leertaste!" );
    	printf ( "%s\r", count_down );
    
    	while( !_kbhit() ) {
          Sleep ( 10 ); // Verringert CPU Auslastung.
    	  n++;
    	  if ( 0 == n%10 ) count_down[i--] = BLANK, printf ( "%s\r", count_down );
    	  if ( n == 100 ) break; // 1 Sekunde ist abgelaufen.
    	}
    
    	if ( n < 100 && _getch() == BLANK ) 
    		puts ( HAPPY );
    	else
    		puts ( SAD ); 
    	return 0; 
    }
    

    🙂



  • Vielen Dank Big Brother

    Endlich hat mich mal Jemand verstanden und mir geholfen 😃 👍



  • Entschuldigung das ich so spät nochmal eine Frage stelle,
    aber kann man das auch mit mehreren Pfeiltasten machen?
    (Ich weiss schon das sie zuerst die zahl 224 ausgeben.)



  • klaro, das geht mit allen tasten


Log in to reply