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.

First Actor

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.