i

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.

WIDTH = 800
HEIGHT = 600
TITLE = "Entscheidungen"

meteorit = Actor("meteorit.png")
meteorit.x = 400
meteorit.y = 200


laser = Actor("laser_ohne_strahl.png")
laser.x=400
laser.y=300

def on_key_down(key):
    if key==keys.RIGHT:
        laser.x += 10
    elif key==keys.LEFT:
        laser.x -= 10
    else:
        laser.image="laser_mit_strahl.png"
        meteorit.image="meteorit_explosion.png"


def draw():
    screen.blit("sterne.png",(0,0))
    laser.draw();
    meteorit.draw()
Python

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.

def on_key_down(key):
Python

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
    if key==keys.RIGHT:
    Python
    ü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.
    elif key==keys.LEFT:
    Python
    Falls dem so ist, wird nacheinander die x-Koordinate der Kanone um 10 verkleinert.
  • Ist keine der obigen Bedingungen erfüllt,
    else:
    Python
    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:

if key==keys.RIGHT:
Python

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 bis K_9,
  • Die Eigenschaften der Funktionstasten heißen F1 bis F12. Die wichtigsten anderen Tasten sind.
  • Die wichtigsten anderen Tasten sind.
    EigenschaftTaste
    keys.UP Pfeiltaste nach oben
    keys.DOWNPfeiltaste nach unten
    keys.LEFTPfeiltaste nach links
    keys.RIGHTPfeiltaste nach rechts
    keys.SPACELeertaste
    keys.TABTabulatortaste
    keys.RETURNEnter-Taste
    keys.ESCAPEEscape-Taste
    keys.PAGEUPBild ↑
    keys.PAGEDOWNBild ↓

Aufgabe 1: Mini-Änderung – große Wirkung

Ändere das Programm so ab, dass die Zeile

meteorit.image="meteorit_explosion.png"
Python

nicht mehr so weit eingerückt ist, sondern unter dem „e“ von „else“ beginnt, also so:

def on_key_down(key):
    if key==keys.RIGHT:
        laser.x += 10
    elif key==keys.LEFT:
        laser.x -= 10
    else:
        laser.image="laser_mit_strahl.png"
    meteorit.image="meteorit_explosion.png"
Python

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

Suche

7.4.5.1
schuljahr.inf-schule.de/aktuell/oop/spiele-python/entscheidungen/tasten-unterscheiden
schuljahr.inf-schule.de/aktuell/7.4.5.1
schuljahr.inf-schule.de/aktuell/@/page/o9GV6veAoPZBas2b

Rückmeldung geben