'============================================================================
' (p)'23/02/2003 by East-Power-Soft
'
' Tipp 6: Nutzen der INP(&H60) Funktion für eine schnelle Tastaturabfrage.
'============================================================================
SCREEN 12
'============================================================================
' Beispiel mit INKEY$
'============================================================================
COLOR 15
PRINT "Dieses Beispiel zeigt die Verwendung von INKEY$ zur Tastaturabfrage."
PRINT "Bewege das Viereck innerhalb des Kastens mit den Cursortasten."
PRINT "Wie man merkt, vergeht zwischen Tastendruck und Reaktion eine gewisse"
PRINT "Zeit. Diese Zeit wird Tastaturrepeat genannt. Leider kann man diese Zeit"
PRINT "nicht auf 0 heruntersetzen und gerade bei Spielen ist das höchst ungünstig."
COLOR 14: PRINT "Weiter mit RETURN."
COLOR 11
LOCATE 10
PRINT "+------------------------------------------------------------------------------+"
FOR I = 1 TO 15
PRINT "|
|"
NEXT
PRINT "+------------------------------------------------------------------------------+"
Z = 20: S = 39
Zalt = Z: Salt = S
LOCATE Z, S: PRINT CHR$(219);
DO: SELECT CASE UCASE$(INKEY$)
CASE CHR$(0) + CHR$(&H48) '---> Hoch
IF Z > 11 THEN Z = Z - 1: GOSUB Bewegung
CASE CHR$(0) + CHR$(&H50) '---> Runter
IF Z < 25 THEN Z = Z + 1: GOSUB Bewegung
CASE CHR$(0) + CHR$(&H4B) '---> Links
IF S > 2 THEN S = S - 1: GOSUB Bewegung
CASE CHR$(0) + CHR$(&H4D) '---> Rechts
IF S < 79 THEN S = S + 1: GOSUB Bewegung
CASE CHR$(&HD): EXIT DO '---> RETURN
END SELECT: LOOP
'============================================================================
' Beispiel mit INP(&H60)
'
' WICHTIG: Bei der Anwendung des INP(&H60) müssen die Codes für die abzu-
' fragenden Tasten ermittelt werden, da diese nicht ihren ASCII's
' entsprechen. Ausserdem sollte man sich immer ein Hintertürchen
' zum Beenden der Abfrageroutine offenhalten, da diese Abfrage so
' schnell ist, das am Ende nicht einmal mehr der berühmte Affengriff geht.
'============================================================================
CLS
COLOR 15
PRINT "Nun noch einmal das selbe, allerdings mit INP(&H60)."
PRINT "Bewege das Viereck innerhalb des Kastens mit den Cursortasten."
PRINT "Diesmal ist das ganze so schnell, daß wir sogar eine Kunstpause einbauen müssen."
COLOR 14: PRINT "Ende mit ESC."
COLOR 11
LOCATE 10
PRINT "+------------------------------------------------------------------------------+"
FOR I = 1 TO 15
PRINT "|
|"
NEXT
PRINT "+------------------------------------------------------------------------------+"
Z = 20: S = 39
Zalt = Z: Salt = S
LOCATE Z, S: PRINT CHR$(219);
DO: SELECT CASE INP(&H60)
CASE &H48 '---> Hoch
IF Z > 11 THEN Z = Z - 1: GOSUB Bewegung1
CASE &H50 '---> Runter
IF Z < 25 THEN Z = Z + 1: GOSUB Bewegung1
CASE &H4B '---> Links
IF S > 2 THEN S = S - 1: GOSUB Bewegung1
CASE &H4D '---> Rechts
IF S < 79 THEN S = S + 1: GOSUB Bewegung1
CASE &H81: END '---> Escape
END SELECT: LOOP
Bewegung: '---> Bewegungsroutine für INKEY$
LOCATE Zalt, Salt: PRINT " ";
LOCATE Z, S: PRINT CHR$(219);
Zalt = Z: Salt = S
RETURN
Bewegung1: '---> Bewegungsroutine für INP(&H60)
LOCATE Zalt, Salt: PRINT " ";
LOCATE Z, S: PRINT CHR$(219);
Zalt = Z: Salt = S
'---> löschen des Tastaturpuffers, sonst piepts
WHILE INKEY$ <> "": WEND
FOR P = 0 TO 10000: NEXT '---> eine kleine Kunstpause.
RETURN