Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Tastaturenpuffer leeren

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Zwieback



Anmeldungsdatum: 25.03.2009
Beiträge: 2

BeitragVerfasst am: 25.03.2009, 19:50    Titel: Tastaturenpuffer leeren Antworten mit Zitat

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? traurig

So frage ich die Tastatur im Moment ab:
Code:
do
    Menu = inkey
loop until Menu <> ""
getkey
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 25.03.2009, 20:13    Titel: Antworten mit Zitat

Vermutlich ist MULTIKEY das Richtige für Dich...
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.03.2009, 21:03    Titel: Re: Tastaturenpuffer leeren Antworten mit Zitat

Hallo!
Zwieback hat Folgendes geschrieben:
Tastaturenpuffer leeren

Hast du Folgendes schon mal probiert?
Code:
'Puffer leeren:
DO: SLEEP 1: LOOP UNTIL INKEY = ""

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Zwieback



Anmeldungsdatum: 25.03.2009
Beiträge: 2

BeitragVerfasst am: 25.03.2009, 21:44    Titel: Antworten mit Zitat

Danke Sebastian. Funktioniert nun grinsen .

Könnetst du mir noch den gefallen tun und mir erklären warum das so geht oder was der trick dabei ist? Bitte. Gnade, Gnade!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.03.2009, 14:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AQUA-MAN



Anmeldungsdatum: 26.03.2009
Beiträge: 15

BeitragVerfasst am: 26.03.2009, 23:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.03.2009, 23:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AQUA-MAN



Anmeldungsdatum: 26.03.2009
Beiträge: 15

BeitragVerfasst am: 26.03.2009, 23:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 27.03.2009, 01:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz