C++ zeitbegrenzte schreibmöglichkeit
-
Ich habe Dev-c++ 4.9.4.1
ich möchte mit zeitbegrentzung schreiben wass brauche ich dafür ?
-
^^erklär mal genauer was du machen willst.
-
ich möchte das wenn man 1 sec nichts eingegeben hat das sich ein punkt bewegt bei jeder weiteren sec sol er sich wieder ein bischen mehr bewegen aber wenn man etwas eingibt das sich dann ein anderer punckt bewegt.
-
die standard eingabefunktionen sind alle 'blocking'. brauchste wohl 'ne non-standard eingabefunktion, wie das: http://www.cprogramming.com/fod/kbhit.html
hast du windows? dann vielleicht damit: http://msdn.microsoft.com/en-us/library/ms646293(VS.85).aspx
-
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 kommtkö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