Blitz2D: Warten auf den Benutzer

Aus Wikibooks

Navigation: BlitzBasic >>> Blitz2D >>> Funktionen >>> Grundwissen

Es gibt in Blitzbasic mehrere Funktionen, mit denen auf etwas gewartet wird. Hier sollen zunächst nur die Funktionen gezeigt werden, die auf eine Benutzereingabe warten. Da Blitzbasic 3 Möglichkeiten von Benutzereingaben unterscheidet, gibt es auch 3 Anweisungen, die auf die jeweilige Eingabe warten:

  • WaitMouse ;wartet darauf, dass eine beliebige Maustaste gedrückt wird
  • WaitJoy ;wartet darauf, dass eine beliebige Taste bei einem Joystick oder Gamepad gedrückt wird
  • WaitKey ;wartet darauf, dass eine beliebige Taste auf der Tastatur gedrückt wird

Doch eigentlich sind das keine Anweisungen, sondern Funktionen, die als Anweisungen benutzt werden können. Der Unterschied besteht erstens darin, dass bei einer Funktion ein Wert zurück gegeben wird, in diesem Fall jeweils die Taste, die gedrückt wurde. Zweitens müssen Parameter hinter dem Funktionsnamen in Klammern gesetzt werden, aber auch wenn keine Parameter übergeben werden, müssen die Klammern hinter dem Funktionsnamen stehen. Bei Anweisungen können Parameter in Klamern gesetzt werden, müssen aber nicht. Darum nochmal das ganze als Funktion mit Detailbeschreibung:

  • Taste=WaitMouse()

Alternativ kann auch MouseWait sowohl als Anweisung, als auch als Funktion verwendet werden. MouseWait ist jedoch keine offizielle Schreibweise und darum in der Hilfe nicht gelistet. daher ist es empfehlenswert, immer WaitMouse zu verwenden.

Rückgabe: 1=linke Taste, 2=rechte Taste, 3=mittlere Taste (oder Druck auf das Mausrad)

  • Taste=WaitJoy([Port])

Alternativ kann auch JoyWait sowohl als Anweisung, als auch als Funktion verwendet werden. JoyWait ist jedoch keine offizielle Schreibweise und darum in der Hilfe nicht gelistet. daher ist es empfehlenswert, immer WaitJoy zu verwenden. Der Parameter "Port" kann angegeben werden, muss jedoch nicht. Wenn er angegeben wird bedeutet 0, das nur beim ersten Jostick/Gamepad auf einen Tastendruck gewartet wird Bei Port=1 wird beim zweiten Joystick/Gamepad gewartet usw. Wird Port nicht angegeben, so werden alle angeschlossenen Joysticks/Gamepads überprüft.

Rückgabe: Nr der gedrückten Taste (1 bis maximal 32) Wenn kein Joystick oder Gamepad angeschlossen ist, wird nicht gewartet und 0 zurück gegeben.

ACHTUNG: Bei BlitzPlus und BlitzMax gibt es weder JoyWait, noch WaitJoy

  • Taste=WaitKey()

ACHTUNG: Bei Blitz3D gibt es keine Alternative, bei BlitzPlus jedoch ist KeyWait ohne Einschränkungen nutzbar

Rückgabe: Der Ascii-Code der Taste (Beschreibung später)

HINWEIS: Auf manchen Blitz-Seiten wird behauptet, das Strg, Alt und Shift nicht beachtet werden, das ist Falsch, richtig ist, das nur Strg nicht beachtet wird. Alt und Shift beenden zwar das Warten auf einen Tastendruck nicht, aber Kombinationen der Tasten mit anderen Tasten können an dem veränderten Rückgabewert erkannt werden.

Damit kann man jetzt das Beenden des Programms so lange aufhalten, bis der Benutzer eine gewünschte Aktion tätigt

;Das Programm wartet, bis der Benutzer eine beliebige Taste drückt
WaitKey ;Waitkey kann als Anweisung oder Function verwendet werden
End ;Nachdem eine Taste gedrückt wurde, wird das Programm beendet.