Kostüme und Hintergrund#
Jedes Actor verfügt über ein oder mehrere Kostüme. Kostüme verfügen über mehrere Bilder, mit denen Animationen beschrieben werden können.
Die Beziehung zwischen der Klasse Actor
und der Klasse Costume
kann folgendermaßen
veranschaulicht werden:
classDiagram direction LR Actor *-- Costume : contains Costume > class Actor{ costumes : list[Costume] +add_costume() +switch_costume() +next_costume() } class Costume{ int orientation bool is_rotatable bool is_flipped bool is_scaled bool is_animated ... + add_image(path) + add_images(list_of_paths) + remove_last_image() }
Note
Wenn du in der api nach den Attributen und Methoden der Klasse Costume
schaust, so findest
du diese in der Klasse Appearance
- Dies ist die Vaterklasse von Costume
und Background
, da
sich der Hintergrund der Spielfläche und die Kostüme der Actors viele Eigenschaften teilen.
Das erste Kostüm#
Mit der Funktion
self.add_costume("images/image.jpg")
kannst du ein neues Kostüm zu einem Actor hinzufügen.
Wenn noch kein Kostüm hinzugefügt wurde, wird dies auch automatisch dein erstes Kostüm.
Weitere Bilder zu einem Kostüm hinzufügen#
Mit der Anweisung costume.add_image kannst du weitere Bilder zu einem Kostüm hinzufügen.
self.costume.add_image("images/image_2.jpg")
Alternativ kannst du direkt auch eine Liste von Bildern zu einem Kostüm hinzufügen:
self.costume.add_images(["images/image_1.jpg, images/image_2.jpg"])
Animationen#
2D-Animationen kannst du dir vorstellen wie ein Daumenkino. Dadurch, dass schnell hintereinander das Bild eines Akteurs/Actor geändert wird, macht es den Anschein, als würde sich der Akteur bewegen.
Dazu musst du zunächst mehrere Bilder zu einem Kostüm hinzufügen (siehe oben).
Anschließend kannst du das Kostüm folgendermaßen animieren:
import miniworlds
world = miniworlds.World(80,80)
robot = miniworlds.Actor()
robot.size = (80,80)
robot.add_costume("images/drive1.png")
robot.costume.add_image("images/drive2.png")
robot.costume.is_animated = True
robot.costume.loop = True
world.run()
Zwischen Kostümen wechseln#
Folgendermaßen wechselst du zwischen zwei Kostümen:
self.switch_costume()
Die Anweisung springt zum nächsten Kostüm. Du kannst als Parameter auch eine Zahl angeben, um zu einem bestimmten Kostüm zu springen.