Schleife abbrechen durch Tastendruck
-
Hallo,
weiss jemand wie ich es realisieren kann, dass meine Schleife die in einem Zeitraum von 10 sekunden abwärts läuft durch einen Tastendruck beedndet wird?
Ich wollte ein Quiz machen bei dem man binnen 10 sekunden antworten muss. Siehe
Quelltext.#include <iostream> #include <conio.h> #include <time.h> using namespace std; int main (void) { cout <<"Wie geht das ???\n a) so\n b) na so\n c) eher so\n"; cout <<"Verbleibende Zeit:"; for(int counter=10;counter>=0;counter--) { Sleep (1000); cout <<counter<<" "; } getch(); return 0; }
-
Ich denke mal dass das besser mit ner While Schleife gehen würde!
Die while schleife so lange durchlaufen bis entweder die ZEit abgelaufen ist oder ein Zeichen eigegeben wurde!
sven
-
Ich wuerds jetzt spontan so machen
while(!kbhit()) {/* ............*/}
MfG
Raptor
-
Ich bin mir nicht ganz sicher aber so müßte es doch auch gehen oder?
for(int counter=10;counter>=0;counter--) { Sleep (1000); cout <<counter<<" "; char blabla; if(std::cin>>blabla); }
klar man müßte noch auf die richtige Eingabe prüfen...
-
garfield7554 schrieb:
Ich bin mir nicht ganz sicher aber so müßte es doch auch gehen oder?
abgesehen davon, dass Sleep nicht im Standard ist gibt es noch das Problem, dass cin>> solange wartet, bis auch etwas eingegeben wurde.
kbhit und conio.h sind auch nicht Standard, aber ich glaube, im Konsolenforum bzw. deren FAQs lässt sich einiges darüber finden.
-
Dieser Thread wurde von Moderator/in davie aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
davie schrieb:
kbhit und conio.h sind auch nicht Standard, aber ich glaube, im Konsolenforum bzw. deren FAQs lässt sich einiges darüber finden.
Korrekt. Also einfach kurz in die Konsolen-FAQ schauen und schon hat man die Lösung bzw. den Lösungsansatz :).
-
ja wie muß ich das jetzt verstehen, was passiert jetzt bei meinem Lösungsansatz
laut davie wartet cin>> solange bis etwas eingegeben wurde und das soll ja auch so sein oder versteh ich da was falsch?
-
ok, mit kbhit bricht die schleife ab, das ist schonmal gut. Und wie kann ich nun vergleichen, ob die gedrückte Taste auch die richtige Antwort ist ???
-
Du ließt den gedrückten Wert mit getch() aus und vergleichst dann?
MfG SideWinder
-
Hallo,
Iirgendwie versteh ich das immer noch nicht ganz. Kann mir eventuell einer sagen, wie die Prüfung aussehen muss, in der Geprüft wird ob ich a gedrückt habe ?#include <iostream> #include <conio.h> #include <conio.c> #include <time.h> using namespace std; int main (void) { int counter=20; while(!kbhit()) { cout <<counter<<" "; Sleep(1000); } if(?????????????????) { cout <<"Sie haben a gedrueckt "; } getch(); return 0; }
-
Die Schleife wartet 10 Sekunden lang, wird während dieser Zeit nichts eingegeben ist das Spiel verloren, wurde ein Zeichen eingegeben wird dieses ausgegeben.
unsigned short int Sekunden = 0; while(!kbhit && Sekunden < 10) { Sleep(1000); ++Sekunden; } if(Sekunden!=10) { cout << "Ihre Antwort war: " << getch() << endl; } else { cout << "Keine Antwort binnen 10 Sekunden, Game Over!" << endl; }
Sollte soweit funktionieren.
MfG SideWinder
-
Fehlerkorrektur und eindeutigere Abprüfung:
unsigned short int Sekunden = 0; while(!kbhit() && Sekunden < 10) { Sleep(1000); ++Sekunden; } if(kbhit()) { cout << "Ihre Antwort war: " << getch() << endl; } else { cout << "Keine Antwort binnen 10 Sekunden, Game Over!" << endl; }
-
Fehlerkorrektur? Was funktioniert an meinem Code nicht?
MfG SideWinder
-
@Side
Versuch mal in C eine Funktion aufzurufen ohne ()
-
-
Die Funktion kenn ich nicht