miniworlds-Tutorials

Grundlagen

Installation

miniworlds installieren H5P herunterladen

Du lernst, wie du miniworlds auf deinem Computer installierst und eine passende Entwicklungsumgebung vorbereitest.

#### Installation mit pip

pip install miniworlds

#### Optional: Physik-Paket

Für Physikfunktionen wie Schwerkraft und Kollisionen kannst du zusätzlich das Physik-Paket installieren:

pip install miniworlds miniworlds_physics

#### Entwicklungsumgebung

Für den Einstieg eignet sich [Thonny](https://thonny.org/) besonders gut, weil Python dort bereits mitgebracht wird.

Die erste Welt

Die erste Welt erstellen H5P herunterladen

Du erstellst deine erste miniworlds-Welt und startest sie im Ausgabefenster.

#### Eine Welt erstellen

from miniworlds import World

# Welt mit 600x300 Pixeln
world = World(600, 300)

# Welt anzeigen
world.run()

#### Hintergrund hinzufügen

import miniworlds

world = miniworlds.World(600, 300)
world.add_background("images/grass.png")
world.run()

:::{note} Die Bilder müssen in einem `images/`-Ordner liegen. :::

Figuren

Eine Figur erstellen H5P herunterladen

Du lernst, wie du Figuren, in miniworlds `Actor` genannt, in deine Welt setzt.

#### Eine Figur erstellen

import miniworlds

world = miniworlds.World(600, 300)
actor = miniworlds.Actor((100, 40))
world.run()

#### Kostüme hinzufügen

from miniworlds import World, Actor

world = World(600, 300)
actor = Actor((100, 40))
actor.add_costume("images/player.png")
world.run()

:::{note} Die Position `(100, 40)` bezieht sich auf den **Mittelpunkt** der Figur. :::

Bewegung

Figuren bewegen H5P herunterladen

Du lernst, wie du Figuren bewegst und ihre Richtung veränderst.

#### move() – Geradeaus bewegen

@player.register
def act(self):
    self.move()

#### Richtung ändern

@player.register
def act(self):
    self.direction = 0
    self.move()

#### Drehen

@player.register
def on_key_down_a(self):
    self.turn_left(30)

@player.register
def on_key_down_d(self):
    self.turn_right(30)

#### move_in_direction()

@player.register
def act(self):
    self.move_in_direction(45)  # Diagonal

Weitere Tutorials

Kollisionen

Rand erkennen und abprallen H5P herunterladen
Kollisionen zwischen Figuren H5P herunterladen

Du lernst, wie Figuren mit dem Rand der Welt und mit anderen Figuren kollidieren.

#### Rand erkennen

@ball.register
def act(self):
    self.move()
    borders = self.detect_borders()
    if borders:
        self.bounce_from_border(borders)

#### Abstand messen

abstand = spieler.get_distance_to(ziel)

#### Berührung erkennen

@ball.register
def act(self):
    if self.detect(ziel):
        print("Berührung!")

Ereignisse

Tastaturereignisse verwenden H5P herunterladen
Mausereignisse verwenden H5P herunterladen

Du lernst, wie dein Programm auf Tastatur- und Mausereignisse reagiert.

#### Tastaturereignisse

@player.register
def on_key_pressed_right(self):
    self.x = self.x + 10

@player.register
def on_key_pressed_a(self):
    self.turn_left(30)

#### Mausereignisse

@world.register
def on_mouse_left(self):
    kreis = miniworlds.Circle((self.mouse_x, self.mouse_y), 20)
    kreis.color = (60, 120, 220)

Animationen und Timer

Animationen verwenden H5P herunterladen
Timer verwenden H5P herunterladen

Du lernst, wie du einfache Animationen und zeitgesteuerte Abläufe einsetzt.

#### Animationen

knight = miniworlds.Actor((100, 100))
knight.add_costume("images/knight.png")
knight.add_costume("images/knight2.png")
knight.costume.animate()

#### Timer

@world.register
def on_setup(self):
    self.set_timer("my_timer", 3)

@world.register
def on_timer_my_timer(self):
    print("3 Sekunden vorbei!")

Gekachelte Welten

Gekachelte Welten aus Listen erstellen H5P herunterladen
Die Kamera verwenden H5P herunterladen
Einfache RPG-Welten erstellen H5P herunterladen

Du lernst, wie du gekachelte Welten aus Listen aufbaust und eine Kamera verwendest.

#### Level aus einer Liste erstellen

level = [
    "##########",
    "#S.......#",
    "#..###...#",
    "#....#..Z#",
    "##########",
]

world = miniworlds.TiledWorld(10, 6)

for y, zeile in enumerate(level):
    for x, zeichen in enumerate(zeile):
        position = (x, y)
        if zeichen == "#":
            wand = miniworlds.Actor(position)
            wand.is_blocking = True

#### Kamera einer Figur folgen lassen

world.camera.from_actor(spieler)