miniworlds-Tutorials
Grundlagen
Installation
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
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
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
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) # DiagonalWeitere Tutorials
Kollisionen
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
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
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
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)