Tasten unterscheiden
In diesem Abschnitt lernst Du, wie das Programm auf unterschiedliche Tastendrücke des Benutzers unterschiedlich reagieren kann. Die allermeisten Spiele, die über die Tastatur gespielt werden, werden mehrere Tasten benötigen, auf die sie unterschiedlich reagieren.Programm zum Ausprobieren
Gib das folgende Programm ein und drücke zum Testen die Pfeiltasten nach links und rechts, sowie auch einmal eine andere Taste.
Erkärung
Die erste Änderung gegenüber dem vorhergehenden Programm ist, dass nun hinter dem Funktionsnamen on_key_down
in Klammern noch das Argument key
steht.
In diesem Funktionsargument ist nun gespeichert, welche Taste denn tatsächlich gedrückt wurde. Entsprechend kann das Programm nun entscheiden, wie es reagiert.
Die Entscheidung passiert in drei Schritten:
- Zunächst wird mit überprüft, ob die Pfeiltaste nach rechts gedrückt wurde (es sind wirklich 2 Gleichheitszeichen hintereinander). Falls dem so ist, wird nacheinander die x-Koordinate der Kanone um 10 erhöht.
- Ist dies nicht der Fall, wird als nächstes überprüft, ob die Pfeiltaste nach links gedrückt wurde. Falls dem so ist, wird nacheinander die x-Koordinate der Kanone um 10 verkleinert.
- Ist keine der obigen Bedingungen erfüllt, so wird die Kanone abgefeuert und das Raumschiff zerstört.
Man sieht: In diesem Fall sind beide Befehle eingerückt. Auch unter if … :
und elif … :
können mehrere eingerückte Befehle stehen. Das englische Wort if
bedeutet „falls", das englische Wort else
bedeutet „ansonsten“. Das Wort elif
gibt es im Englischen nicht, es ist ein Kunstwort, das aus „else if“ zusammengesetzt ist.
Schauen wir uns eine der Bedingungen nochmal genauer an:
Jede Taste hat eine interne Nummer. Die Nummer der gedrückten Taste ist im Wert key
gespeichert. Dieser wird mit keys.RIGHT
verglichen. Und keys.RIGHT
ist – richtig – die Eigenschaft RIGHT
des Objekts keys
. Die Nummer der Taste mit dem Pfeil nach rechts ist in dieser Eigenschaft gespeichert. Das Objekt keys
ist sozusagen eine Sammlung von Tastennummern und hat für jede Taste eine gesonderte Eigenschaft.
- Die einzelnen Eigenschaften zu Buchstabentasten heißen so wie die Buchstaben (groß geschrieben):
keys.X
ist also die Taste X. - Die Eigenschaften für die Zahlentasten heißen
K_0
bisK_9
, - Die Eigenschaften der Funktionstasten heißen
F1
bisF12
. Die wichtigsten anderen Tasten sind. - Die wichtigsten anderen Tasten sind.
Eigenschaft Taste keys.UP Pfeiltaste nach oben keys.DOWN Pfeiltaste nach unten keys.LEFT Pfeiltaste nach links keys.RIGHT Pfeiltaste nach rechts keys.SPACE Leertaste keys.TAB Tabulatortaste keys.RETURN Enter-Taste keys.ESCAPE Escape-Taste keys.PAGEUP Bild ↑ keys.PAGEDOWN Bild ↓
Aufgabe 1: Mini-Änderung – große Wirkung
Ändere das Programm so ab, dass die Zeile
nicht mehr so weit eingerückt ist, sondern unter dem „e
“ von „else
“ beginnt, also so:
Überprüfe, was diese kleine Änderung an der Einrückung bewirkt.
Aufgabe 2: Raumschiff mit WASD steuern
Erweitere das Programm so, dass es zusätzlich ein Raumschiff gibt, das man mit den Tasten W, A, S und D über den Bildschirm steuern kann. W: nach oben, A: nach links, D: nach rechts, S: nach hinten.
Aufgabe 3: Richtung des Raumschiffs
Falls du es noch nicht bei der vorhergehenden Aufgabe gemacht hast: Raumschiffe können nicht gut rückwärts oder zur Seite fliegen. Passe also je nach Tastendruck den Winkel des Raumschiffs an.