Actors#

Actors: Die Bausteine deiner Welt#

Ein Actor ist alles in deiner World, das sich bewegen oder verändert werden kann. Es kann sich um eine Figur handeln, die vom Spieler gesteuert wird, oder um ein Objekt wie eine Wand oder ein Hindernis. In Miniworlds ist jeder Actor ein eigenständiges Objekt, das in der World erscheint und mit anderen Objekten interagieren kann.

Einen Actor erstellen#

Lass uns damit beginnen, einen Actor in deiner World zu platzieren. Zuerst erstellen wir eine einfache World mit einem Background und platzieren einen Actor darin:

import miniworlds

# Create a world with dimensions 600x300 pixels
world = miniworlds.World(600, 300)

# Add a background (for example, a grass image)
world.add_background("images/grass.png")

# Create an actor
actor = miniworlds.Actor((100, 40))  # Actor at position (100, 40)

# Start the world to display it
world.run()
Ausgabe

Ausgabe#

Erklärung:#

  • Wir erstellen einen Actor an der Position x=100, y=40. Er wird als lilafarbenes Rechteck angezeigt, weil er noch kein Costume hat.

  • Beachte, dass der Ursprung des Koordinatensystems sich in der oberen linken Ecke befindet.

    Das Koordinatensystem

    Beispiel: Das Koordinatensystem#

  • Die Position (100, 20) bezieht sich auf den Mittelpunkt des Actors.

Costumes / Kostüme#

Jeder Actor in Miniworlds kann ein Costume tragen, das sein äußeres Erscheinungsbild / Appearance festlegt. Ein Costume ist einfach ein Bild, das dem Actor zugewiesen wird, um ihm eine visuelle Identität zu verleihen.

Schritt 1: Bilder vorbereiten#

Bevor du einem Actor ein Costume hinzufügen kannst, kopiere die Bilddateien in den images-Ordner deines Projekts. Eine typische Projektstruktur könnte so aussehen:

project
│   my_world.py  # file with your Python code
└───images
    │   grass.png
    │   knight.png
    │   player.png

Schritt 2: Ein Kostüm hinzufügen#

Sobald deine Bilder bereit sind, kannst du deinem Actor mit der Methode add_costume() ein Costume zuweisen:

from miniworlds import World, Actor

# Create a world with dimensions 600x300
world = World(600, 300)

# Add a background
world.add_background("images/grass.png")

# Create an actor at position (100, 20) and add a costume
actor2 = Actor((100, 20))
actor2.add_costume("images/knight.png")  # "knight.png" as costume

# Start the world so the actors are visible
world.run()

Augabe:#

Ausgabe

Ausgabe#

Erklärung:#

Nach dem Ausführen des Programms siehst du einen Actor mit dem Costume knight.png.

Bonus: Experiment with Your Own Costumes!#

Jetzt, da du weißt, wie man Costumes zuweist, kannst du kreativ werden:

  • Erstelle deine eigenen Bilder und speichere sie im Ordner images.

  • Ändere die Position und das Aussehen deiner Actors.

Erstelle zum Beispiel einen Actor an einer neuen Position und gib ihm ein anderes Bild:

# Add a third actor and give it its own costume
actor3 = Actor((200, 150))
actor3.add_costume("images/cow.png")  # Costume: "cow.png"

# Start the world again
world.run()

Zusammenfassung:#

  • Actors get a costume using the add_costume() method.

  • Die Bilder müssen im richtigen Ordner gespeichert sein, damit sie gefunden werden können.

  • Du kannst beliebig viele Actors mit unterschiedlichen Costumes platzieren und anpassen.

:::{admonition} FAQ

FAQ: Häufige Probleme und Lösungen#

Mein Actor schaut in die falsche Richtung. Was kann ich tun?#

Wenn dein Actor in die falsche Richtung zeigt, gibt es zwei einfache Lösungen:

Problem Beschreibung#

Problem#

from miniworlds import World, Actor

world = World()
world.add_background("images/grass.jpg")
player = Actor((90,90))
player.add_costume("images/player_orientation_top.png")
player.direction = "right"

world.run()
Actor Ausrichtung

Das Bild ist nach oben ausgerichtet. Miniworlds erwartet jedoch, dass Bilder nach rechts zeigen.#

Actor Ausrichtung

In diesem Beispiel sieht es so aus, als schaue der Actor in die falsche Richtung.#

Lösung#

  1. Bild drehen: Du kannst das Bild mit einem Bildbearbeitungsprogramm so drehen, dass es in die gewünschte Richtung zeigt (in der Regel nach rechts).

  2. Ausrichtung im Code anpassen: Alternativ kannst du das Costume direkt in Miniworlds über das Attribut orientation drehen:

    my_actor.costume.orientation = 90  # Rotates the costume by 90 degrees
    

Du kannst auch andere Werte wie -90 oder 180 verwenden, um die richtige Ausrichtung zu erreichen – je nachdem, wie dein Bild gestaltet ist.

Das obige Beispiel kann so korrigiert werden:

from miniworlds import World, Actor

world = World()
world.add_background("images/grass.jpg")
player = Actor((90,90))
player.add_costume("images/player_orientation_top.png")
player.direction = "right"
player.costume.orientation = -90 

world.run()

Erklärung:

  • Das Bild war um -90° nach links gegenüber der erwarteten Position gedreht. Diese Korrektur sorgt dafür, dass der Actor im Spiel in die richtige Richtung schaut.

Wie verhindere ich, dass sich das Costume mit dem Actor mitdreht?#

Wenn du möchtest, dass sich das Costume nicht mit der Bewegung oder Ausrichtung des Actors mitdreht, kannst du die Drehung des Costumes deaktivieren, indem du is_rotatable auf False setzt:

my_actor.costume.is_rotatable = False  # Keeps costume fixed in one direction

:::