Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Zwieback
Anmeldungsdatum: 25.03.2009 Beiträge: 2
|
Verfasst am: 25.03.2009, 19:50 Titel: Tastaturenpuffer leeren |
|
|
Hallo,
ich habe folgendes Problem:
Zur Zeit schreibe ich ein paar spiele in FreeBasic und komme gut voran. Leider habe ich Schwierigkeiten mit der Programmierung einer guten Steuerung, da ich den Tastaturenpuffer leeren muss. Ich habe nur einen Befehle gefunden der dies tut, nämlich getkey. Leider hat getkey zusätzlich die gleiche Funktion wie sleep(Ohne Zeitangabe), d.h. ich muss die Tasten im Spiel immer zweimal drücken. Gibt es einen weg die Tastenabgabe so abzufragen, wie in einem richtigen Spiel ohne einen Hacken?
So frage ich die Tastatur im Moment ab:
Code: | do
Menu = inkey
loop until Menu <> ""
getkey
|
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 25.03.2009, 20:13 Titel: |
|
|
Vermutlich ist MULTIKEY das Richtige für Dich... _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Zwieback
Anmeldungsdatum: 25.03.2009 Beiträge: 2
|
Verfasst am: 25.03.2009, 21:44 Titel: |
|
|
Danke Sebastian. Funktioniert nun .
Könnetst du mir noch den gefallen tun und mir erklären warum das so geht oder was der trick dabei ist? Bitte.  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 26.03.2009, 14:51 Titel: |
|
|
Weil es genau das macht was du willst. Es bleibt so lange in der Schleife hängen, wie noch Daten im Tastaturpuffer (der mit INKEY jeweils "verkürzt wird) vorhanden sind. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
AQUA-MAN

Anmeldungsdatum: 26.03.2009 Beiträge: 15
|
Verfasst am: 26.03.2009, 23:34 Titel: |
|
|
Ich hab da auch eine Frage zu, funktioniert dort kein "tmp = INKEY"?
Das war mein erster Gedanke als ich das Problem gelesen hab.
Und zum Codebeispiel von Zwieback im ersten Post hätte ich auch noch eine Frage: nach dem in der DO..LOOP-Schleife der Variable Menu, nach einem Tastendruck, der Wert von INKEY zugewiesen wurde, ist doch der Tastaturpuffer schon leer oder nicht?
Zumindest bei mir wird der Wert von INKEY schon gelöscht wenn ich nur damit einen Vergleich mache. Beispiel:
Code: | DO
SLEEP 1
LOOP WHILE INKEY = ""
MENU = INKEY
|
Funktioniert bei mir nie weil INKEY zu diesem Zeitpunkt schon keinen Wert mehr hat und die STRING-Variable Menu leer bleibt.
Zuletzt bearbeitet von AQUA-MAN am 27.03.2009, 00:02, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 26.03.2009, 23:44 Titel: |
|
|
Sebastians Code hat auch nichts mit dem Auslesen einer Taste zu tun, sondern mit dem Löschen des Puffers. Du musst Sebastians Code vor den von Zwieback schalten (bzw generell von den Code von Tastaturabfragen per INKEY/INPUT), um den Puffer vorher zu leeren. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
AQUA-MAN

Anmeldungsdatum: 26.03.2009 Beiträge: 15
|
Verfasst am: 26.03.2009, 23:59 Titel: |
|
|
Ja, ist mir schon bewußt gewesen das Sebastians Code nicht zum auslesen einer Taste da ist sondern zum leeren des Puffers. Ich wollte mit meinem Beispiel nur zeigen das der bei mir schon automatisch leer ist sobald ich einen Vergleich mit INKEY mache, im Beispiel am Schleifenende.
OK, frage ich mal anders, wenn sich mehr als ein Tastendruck im Puffer befindet, können die dann alle auf einmal einer Variable zugewiesen werden? Auf einmal = Ohne Schleife
Falls nicht, könnte ich auch verstehen, warum Zwieback eine Schleife braucht zum leeren, wenn doch dann müßte doch trotzdem tmp (oder eine andere String-Variable) = INKEY funktionieren, oder? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 27.03.2009, 01:24 Titel: |
|
|
Nein, "Gleichzeitig" geht nur mit Multikey. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|