GLBasic forum

Other languages => GLBasic - de => Topic started by: mannybass on 2006-Jan-16

Title: Key() und Ziffernblock
Post by: mannybass on 2006-Jan-16
Hi, ich möchte die Tasten 1, 2 und 3 vom Ziffernblock zur Steuerung verwenden. Laut Keycodes.exe sind das die Codes 79, 80 und 81. Wenn ich sie mit KEY(79), KEY(80) oder KEY(81) abfrage, passiert nichts. Andere Tasten funktionieren. Weiß jemand Rat?
Danke im Voraus.
Title: Key() und Ziffernblock
Post by: Kitty Hello on 2006-Jan-16
Häää!?
Die müssen gehn...
Wie sieht denn der Code dazu aus?
Title: Key() und Ziffernblock
Post by: mannybass on 2006-Jan-16
Also ich hab ne Funktion, in der ich die Eingabe verarbeite:

SUB KeyboardHandling:
   IF KEY(1) = 1
      GameIsRunning = FALSE
   ENDIF
   IF KEY(17) = 1 OR KEY(79) = 1      // W oder Numpad1
      Message$ = "Weiter!"
   ENDIF
   IF KEY(32) = 1 OR KEY(80) = 1      // D oder NumPad2
      Message$ = "Double!"
   ENDIF
   IF KEY(18) = 1 OR KEY(81) = 1      // E oder NumPad3
      Message$ = "Ende"
   ENDIF
ENDSUB // KEYBOARDHANDLING

In der Hauptschleife rufe ich diese Funktion auf und Message$ wird dann angezeigt.
IF KEY(17) = 1 or KEY(44) = 1 ... funktioniert z. B., nur die Zahlen vom Ziffernblock nicht.
Habe Version 2.51103 laut Editor.
Title: Key() und Ziffernblock
Post by: Kitty Hello on 2006-Jan-17
OK. Bei mir geht's. Mach mal bitte ein InternetUpdate (Menü: Web/Internet Update).
Wenn das Keycode-Programm geht, dann kapier ich's nicht, weil das der gleiche Code ist...
Title: Key() und Ziffernblock
Post by: mannybass on 2006-Jan-21
Hi, Internet-Update sagt, die Version ist aktuell. Ich hab nen Laptop mit USB Tastatur und einen normalen PC. Es geht bei beiden nicht. Hier mein Beispiel:

GLOBAL Message$ = ""
GLOBAL GameIsRunning = TRUE


// Start
GOSUB LoadMedia

// ---------------------------------- //
// Main Loop
// ---------------------------------- //
WHILE GameIsRunning = TRUE
   GOSUB KeyboardHandling
   IF Message$ <> ""
      PRINT Message$, 200, 200
   ENDIF
   SHOWSCREEN
   KEYWAIT
WEND


// Programmende
END


// #####################################
// Funktionen
// #####################################


// ------------------------------------------------------------- //
// -=#  LOADMEDIA  #=-
// ------------------------------------------------------------- //
SUB LoadMedia:
   LOADBMP "bmphintergrund800600.bmp"
ENDSUB // LOADMEDIA




// ------------------------------------------------------------- //
// -=#  KEYBOARDHANDLING  #=-
// ------------------------------------------------------------- //
SUB KeyboardHandling:
   IF KEY(1) = 1                  // Escape
      GameIsRunning = FALSE
   ENDIF
   IF KEY(17) = 1 OR KEY(79) = 1      // W oder Numpad1
      Message$ = "Numpad1!"
   ENDIF
   IF KEY(32) = 1 OR KEY(80) = 1      // D oder NumPad2
      Message$ = "Numpad2!"
   ENDIF
   IF KEY(18) = 1 OR KEY(81) = 1      // E oder NumPad3
      Message$ = "Numpad3"
   ENDIF
ENDSUB // KEYBOARDHANDLING


Noch etwas: an der Stelle, wo Message$ gedruckt wird, hängt die Sanduhr fest. Kann ich den Mauszeiger irgendwie ausblenden, sowas wie HideMouse ?
Title: Key() und Ziffernblock
Post by: BumbleBee on 2006-Jan-21
Hi

KEYWAIT weglassen.
Die Tastaturabfrage wird ja in jedem Schleifendurchgang
mit GOSUB KeyboardHandling aufgerufen.

Und das END nach der Schleife kannst du dir auch sparen.

Wenn du das Programm beenden möchtest kannst du in der
Schleife z.B. das schreiben.

IF KEY(57) THEN END

Das beendet dein Programm mit der Leertaste

Probier's nochmal ob's geht

Cheers
Title: Key() und Ziffernblock
Post by: mannybass on 2006-Jan-22
Hi, danke. Wenn ich KEYWAIT weglasse, funktionieren auch die Tasten vom Ziffernblock.

Danke nochmal.