passive abfrage ob taste gedrückt
-
hi, also ich will eine konsolenanwenndung mit c++ schreiben. Ich habe also eine schleife. Diese soll sich nun immer weiter wiederhohlen. Z.B. soll sie bei jedem durchlauf irgendetwas mit printf ausgeben. Nun soll in der Schleife eine if bedingung sein, die abfragt ob eine taste gedrückt wird, und wenn ja das z.b. die schleife abgebrochen wird. Ist keine taste gedrückt soll die schleife einfach weiterlaufen. Wie realisiert man sowas?
-
Hallo
Willst du wissen, wie man die Taste abfragt, oder wie man die Schleife dann verlässt?
chrische
-
Hallo,
Soll bei entsprechendem Tastendruck die Schleife _direkt_ verlassen werden, oder soll die Schleife in ihrem Rumpf jedes mal eine Eingabe erwarten, die dann in einer if-Abfrage verarbeitet wird und ggf. die Schleife verlässt?
Wenn ersteres zutrifft: Das geht mit Hilfe der API von Standard-C++ nicht. D.h. du kannst nicht interaktiv auf Tastendrücke reagieren. (Du musst hier immer zuerst die ENTER-Taste drücken).
Andernfalls: Wo hängts denn?Gruß, Caipi.
-
Nicht Standard
aber vielleicht kannst du ja mit conio.h und kbhit() was anfangen ...
-
die schleife soll eben weder beendet noch unterbrochen werden.
Kurzes Beispiel worauf ich hinaus will: nehmen wir jetzt z.B. mal nen Jump n Run. Während des spiels ist man ununterbrochen in der haupschleife. Sagen wir man will nach vorne gehen. Dann drückt man auf ne Taste aber vollkomen unverändert dadurch läuft die hauptschleife weiter und meinetwegen bewegen sich halt die gegner weiter, ob die taste nun gedrückt ist oder nicht.Ich dachte da an eine lösung über kbhit() und getch() nur leider weis ich nicht genau wie ich das machen soll. Unmöglich kanns ja andererseits auch nicht sein, da ja wirklich nahezu jedes game, so funktioniert.
-
Hallo
Es natürlich nicht unmöglich aber du wirst dann wohl auf das Framework zurückgreifen, welches du verwendest (bei Jump'n'Run eventuell SDL)
chrische
-
also ich weis, das es irgendwie mit kbhit geht, da ich es früher sogar selber schon gemacht habe. nur ist das schon so lange her das ich das letzte mal c/c++ gecodet habe, das ich da jetzt echt kein plan mehr habe. Aber irgendwie müssen die Spiele doch gemacht werden. Was programmiert ihr den alle? Ich dachte sowas wär für nen standart programmierer alltäglich.
-
Hallo
Ich verwende die Funktion des Frameworks (beispielsweise SDLInput oder so ähnlich)
chrische
-
die sache ist die, das das prog alles in allem noch sehr simpel sein soll. Ich möchte noch keine sdl`s einbinden.
-
Hallo
Soll es in der Konsole sein?
chrische
-
wie meinste in der konsole? Das soll nacher alles innem dosfenster sein fallste das so meinst.
-
Hallo
Das nennt sich auch Konsole.
chrische
-
while(...) { while(!kbhit()) { // run ... } //Jump ... }
-
hey thx Freak_Coder. Genauso hatte ich es früher gemacht. Komisch das ich da nicht selber draufgekommen bin, aber bei meinem lösungsansatz wurde das programm trotzdem irgendwie immer gestoppt.
Also vielen dank an alle
-
Oder auch anders herum:
while(!dead) { //run if(kbhit()) { char c=getch(); //jump } }
-
Dieser Thread wurde von Moderator/in HumeSikkins 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.