Events#

Mach dein Spiel interaktiv#

In diesem Abschnitt lernst du, wie du dein Spiel interaktiv gestalten kannst, indem du auf Tastatureingaben, Mausaktionen oder Kollisionen reagierst.

Was sind Events?#

Events sind der Schlüssel zu interaktiven Spielen. Sie ermöglichen es deinem Spiel, auf Benutzeraktionen wie Tastendrücke oder Mausbewegungen zu reagieren und das Verhalten deiner Actors dynamisch zu verändern.

  • on_setup(): Wird zu Beginn aufgerufen, um deine World zu initialisieren und vorzubereiten.

  • act(): Wird in jedem Frame aufgerufen, um die World und ihre Actors zu aktualisieren.

  • Es gibt spezielle Event-Methoden wie on_key_pressed, on_mouse_left oder on_clicked_left, um auf Benutzeraktionen zu reagieren.

Events registrieren#

Damit ein Actor oder die World auf ein Event reagieren kann, muss die entsprechende Methode registriert werden – genau wie bei der Methode act().

Beispiel: Einfache Tastatureingabe#

@player.register  # Registers the method as an event
def on_key_down_w(self):
    self.y -= 1  # Moves the player upward

Erklärung:#

Diese Methode wird ausgeführt, wenn die Taste w gedrückt wird. Der Actor player bewegt sich um einen Schritt nach oben.

Beispiel: Steuerung mit mehreren Tasten#

Im nächsten Beispiel wird ein Actor mit den Tasten W, A, S und D gesteuert:

import miniworlds

world = miniworlds.TiledWorld()
world.columns = 20
world.rows = 8
world.tile_size = 42
world.add_background("images/soccer_green.jpg")

player = miniworlds.Actor()
player.add_costume("images/player_1.png")

@player.register
def on_key_down_w(self):
    self.y = self.y - 1  # Move actor up

@player.register
def on_key_down_a(self):
    self.x = self.x - 1  # Move actor left

@player.register
def on_key_down_d(self):
    self.x = self.x + 1  # Move actor right

@player.register
def on_key_down_s(self):
    self.y = self.y + 1  # Move actor down

world.run()

Erklärung:#

In diesem Beispiel wird der Actor wie folgt gesteuert:

  • W: Nach oben bewegen

  • A: Nach links bewegen

  • D: Nach rechts bewegen

  • S: Nach unten bewegen

Unterschied: on_key_down vs. on_key_pressed#

Es gibt zwei Arten von Tastatur-Events zur Verarbeitung von Tasten-Eingaben:

  • on_key_down(self, key): Wird einmal aufgerufen, wenn die Taste gedrückt wird.

  • on_key_pressed(self, key): Wird fortlaufend aufgerufen, solange die Taste gedrückt gehalten wird.

Beispiel: Unterschiedliche Tastatur-Events#

import miniworlds 

world = miniworlds.World()
world.add_background("images/grass.jpg")

player = miniworlds.Actor((90, 90))
player.add_costume("images/player.png")
player.costume.orientation = -90 

@player.register
def on_key_down_w(self):
    self.y -= 1  # Moves player 1 upward

player2 = miniworlds.Actor((180, 180))
player2.add_costume("images/player.png")
player2.costume.orientation = -90 

@player2.register
def on_key_pressed_s(self):
    self.y -= 1  # Continuously moves player 2 downward while key is held

world.run()

Bemerkung

Du kannst entweder bestimmte Tasten wie on_key_down_b(self) definieren oder allgemeine Tasteneingaben über on_key_down(self, key) verarbeiten.