Veranstaltungen#

Make your game interactive#

In this section, you will learn how to add interactivity to your game by responding to keyboard inputs, mouse actions, or collisions.

What are events?#

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

  • on_setup(): Wird am Anfang aufgerufen, um deine Welt zu initialisieren und vorzubereiten.

  • act(): Diese Methode wird in jedem Frame aufgerufen und aktualisiert die Welt sowie die Akteure.

  • There are special event methods like on_key_pressed, on_mouse_left, or on_clicked_left to respond to various user actions.

Veranstaltungen registrieren#

In order for an actor or the world to react to an event, you must register the corresponding method. The registration works similarly to the act() method.

Example: Simple key input#

@player.register  # Registriert die Methode als Event
def on_key_down_w(self):
    self.y -= 1  # Bewegt den Spieler nach oben

Erklärung:#

This method is executed when the w key is pressed. The actor player moves one step upwards.

Example: Control with multiple buttons#

In the next example, an actor is controlled using the keys W, A, S, and D.

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  # Bewegt den Akteur nach oben

@player.register
def on_key_down_a(self):
    self.x = self.x - 1 # Bewegt den Actor nach links

@player.register
def on_key_down_d(self):
   self.x = self.x + 1  # Bewegt den Actor nach rechts

@player.register
def on_key_down_s(self):
    self.y = self.y + 1  # Bewegt den Actor nach unten

world.run()

Erklärung:#

In this example, the actor is controlled as follows:

  • W: Moves the actor up.

  • A: Moves the actor to the left.

  • D: Moves the actor to the right.

  • S: Moves the actor down.

Unterschied: on_key_down vs. on_key_pressed#

There are two types of keyboard events to respond to key interactions:

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

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

Example: Different Keyboard 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  # Bewegt den ersten Spieler nach oben

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  # Bewegt den zweiten Spieler nach unten, solange die Taste gedrückt ist
    
world.run()

Bemerkung

You can either query specific keys like on_key_down_b(self) or handle general keyboard events with on_key_down(self, key) to detect all keyboard inputs.