Key() und Ziffernblock

Previous topic - Next topic

mannybass

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.

Kitty Hello

Häää!?
Die müssen gehn...
Wie sieht denn der Code dazu aus?

mannybass

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.

Kitty Hello

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...

mannybass

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 ?

BumbleBee

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
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

mannybass

Hi, danke. Wenn ich KEYWAIT weglasse, funktionieren auch die Tasten vom Ziffernblock.

Danke nochmal.