while Schleife Problem
-
Schau dir mal kbhit() aus der conio.h (non-standard) an.
-
danke

jetzt würde ich noch gern die schleife langsamer laufen lassen. im internet liest man ganz schön viel aber irgendwie eine gute lösung hab ich nicht gefunden.
sleep(...) ist nix weil er dann auch keine key`s annimmt.
-
acadc schrieb:
sleep(...) ist nix weil er dann auch keine key`s annimmt.
Huh? Wieso das? Dann machst du vermutlich was falsch. Mit kbhit prüfen, ob eine Taste gedrückt wurde, und mit getch das Zeichen abholen. Ich glaube, ein sleep/Sleep stört da nicht. Zeig mal her, wie du es gelöst hast.
-
while(1) { if( GetAsyncKeyState(0x57)) break; // 0x57 == enter // tu etwas Sleep(1000); system("CLS"); }wenn ich die sleeptime erhöhe, wirds natürlich schlimmer
-
also so wie ich das sehe, muss ich wohl multitasking hier machen wenn ich das so möchte oder? weil ich kann die if abfrage nur davor oder danach machen.
oder ich glaub ich steh absolut auf dme schlauch

-
Du nimmst ja auch die falsche Funktion. GetAsyncKeyState gibt dir an, ob eine Taste zum Zeitpunkt des Aufrufs der Funktion gedrückt ist. Wenn gerade dein Sleep läuft, du die Taste drückst und sie später wieder loslässt, bevor GetAsyncKeyState aufgerufen wird, hast du verloren. kbhit sagt dir hingegen, ob eine Taste gedrückt wurde. Wenn das der Fall ist, liegt das entsprechende Zeichen im Puffer und darf von dir mit getch abgeholt werden.
Grobes Beispiel:
while(true) { //ohne Warnung: for(;;) //mache was Sleep(1000); if(kbhit()) { char c=getch(); //verarbeite den Tastendruck } }
-
vielen dank für deine antwort

zum glück gibt es menschen wie dich, die für ab und zu mal ein "danke" anderen helfen.was meinst du mit ohne Warunung? (//ohne Warnung: for(;;))
-
Damit meinte er, dass du auch die angegebene Alternative nehmen kannst, damit du die Compiler-Warnung "die Bedingung ist konstant" oder so nicht bekommst.
-
danke

was muss ich einbinden damit ich kbhit() und getch() benutzen kann? des kennt der nämlich mal wieder nicht

-
Da empfehle ich dir mal, immer nach der Funktion zu googeln und nach dem einzubindenden Header zu schauen. Wenn du auf http://www.cplusplus.com landest, dann bist immer auf der sicheren Seite. In diesem Fall ist es "conio.h" (glaube ich..).
-
Genau, conio.h. Hatte ich auch schon auf Seite 1 erwähnt.
