api:documentation:spiele:tastatur
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | api:documentation:spiele:tastatur [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Tastatursteuerung ====== | ||
+ | Es gibt grundsätzlich zwei Ansätze, um auf Tastaturereignisse zu reagieren: | ||
+ | |||
+ | ===== a) Abfrage des Tastatur-Status in der act-Methode ===== | ||
+ | <WRAP center round info 80%> | ||
+ | Jedes graphische Objekt hat die Methoden '' | ||
+ | </ | ||
+ | |||
+ | ===== Beispiel 1: Steuerung eines Raumschiffs ===== | ||
+ | Starte das Programm und probiere die Pfeiltasten und die Tasten r und l aus! | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new Raumschiff(); | ||
+ | |||
+ | class Raumschiff extends Sprite { | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | super(400, 300, SpriteLibrary.Ship_1, | ||
+ | scale(0.3); | ||
+ | } | ||
+ | |||
+ | | ||
+ | |||
+ | if(isKeyDown(" | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(" | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(Key.ArrowLeft)) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(Key.ArrowRight)) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(Key.ArrowUp)) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(isKeyDown(Key.ArrowDown)) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== b) Überschreiben von Ereignis-Handlern ===== | ||
+ | <WRAP center round info 80%> | ||
+ | Jedes graphische Objekt (genauer: jede Unterklasse von '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | Diese Methoden kann man überschreiben und damit auf die entsprechenden Tastaturereignisse reagieren. \\ \\ | ||
+ | **Bemerkung: | ||
+ | </ | ||
+ | |||
+ | ===== Beispiel 2: Starten von Raumschiffen durch Überscheiben von Ereignishandlern ===== | ||
+ | Starte das Programm und probiere die Tasten a, b und c aus! | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new Raumschiff2(100, | ||
+ | new Raumschiff2(300, | ||
+ | new Raumschiff2(500, | ||
+ | new Raumschiff2(700, | ||
+ | |||
+ | class Raumschiff2 extends Sprite { | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | super(x, y, SpriteLibrary.Ship_1, | ||
+ | this.taste = taste; | ||
+ | scale(0.3); | ||
+ | rotate(90); | ||
+ | } | ||
+ | |||
+ | | ||
+ | |||
+ | move(0, vy); | ||
+ | if(isOutsideView()) { | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | | ||
+ | if(key == taste) { | ||
+ | vy = -40; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||