Actor

Inhalt

Actor#

Actors koennen ueber Nachrichten kommunizieren, wenn das leichter zu lesen ist als direkte Objektverweise.

Kombiniere send_message(...) mit @register_message("...") fuer einfache, anfaengerfreundliche Event-Ablaufe zwischen Actor-Klassen.

Für Einsteigergruppen kannst du world.learning_mode = True aktivieren. In diesem Modus werden häufige Eingabefehler nach Möglichkeit toleranter behandelt, zum Beispiel werden Listenpositionen in vielen Actor-Positionsmethoden akzeptiert.

Nutzliche Anfaenger-Aliasse auf Actor sind:

  • go_to(...) for move_to(...)

  • move_forward(...) for move(...)

  • face(...) for set_direction(...)

  • turn(...) for turn_right(...)

  • touching(...) and touching_all(...) for detect helpers

API-Referenz#

class miniworlds.actors.actor.Actor(position=(0, 0), *args, **kwargs)[Quellcode]#

Interaktives Objekt, das in einer Welt platziert wird.

Actors können sich bewegen, Kostüme wechseln, Kollisionen erkennen, Nachrichten senden und auf Tastatur-, Maus- und Lebenszyklusereignisse reagieren.

Beispiele

Create a basic actor:

    from miniworlds import Actor, World

    world = World(100, 60)
    Actor((10, 10), world=world)
    world.run()

Create an actor with a costume:

    from miniworlds import Actor, World

    world = World(100, 60)
    player = Actor((10, 10), world=world)
    player.add_costume("images/player.png")
    world.run()
actor_count: int = 0#
add_costume(source=None)[Quellcode]#

Add a costume to the actor.

Rückgabetyp:

Costume

Parameter:

source – Image path, color tuple, list of image sources, existing Costume, or None for an empty costume.

Rückgabe:

Das neue Kostüm.

Beispiele

player = Actor((20, 20))
player.add_costume("images/player.png")
player.add_costume((255, 255, 0))

idle = player.add_costume("images/idle.png")
run = player.add_costume("images/run.png")
player.switch_costume(run)
add_costumes(sources)[Quellcode]#

Add several costumes.

Rückgabetyp:

Costume

Parameter:

sources – Liste aus Bildpfaden, Farbtupeln oder Kostümquellen.

Rückgabe:

The last added costume.

Beispiele

actor.add_costumes(["images/idle.png", "images/run.png"])
animate(speed=10)[Quellcode]#

Animate the current costume.

Parameter:

speed – Frames zwischen Animationsschritten.

Beispiele

actor.animate(speed=5)
animate_costume(costume, speed=10)[Quellcode]#

Animate a specific costume.

Parameter:
  • costume – Zu animierendes Kostüm.

  • speed – Frames zwischen Animationsschritten.

Beispiele

actor.animate_costume(run_costume, speed=5)
animate_loop(speed=10)[Quellcode]#

Animate the current costume in a loop.

Parameter:

speed – Frames zwischen Animationsschritten.

Beispiele

player.costume.add_images(["images/walk1.png", "images/walk2.png"])
player.animate_loop(speed=8)
before_remove()[Quellcode]#

Hook, der unmittelbar vor dem Entfernen des Actors aus der Welt aufgerufen wird.

property border#

Border width of the actor.

A value of 0 means no border.

Hinweise

You can also configure borders via costume.border or world.default_border.

property border_color#

Border color as RGBA tuple.

Hinweise

  • Setze Actor.border auf einen Wert größer als 0, um einen sichtbaren Rand zu erhalten.

  • Alias: Actor.stroke_color.

bounce_from_actor(other)[Quellcode]#

Reflect movement direction after colliding with another actor.

Parameter:

other – Actor to bounce from.

Beispiele

other = ball.detect()
if other:
    ball.bounce_from_actor(other)
bounce_from_border(borders)[Quellcode]#

Bounce the actor away from world borders.

Rückgabetyp:

Actor

Parameter:

borders – Randnamen wie "left" oder "top".

Rückgabe:

The actor itself.

Beispiele

@ball.register
def act(self):
    self.move()
    borders = self.detect_borders()
    if borders:
        self.bounce_from_border(borders)
property center: Tuple[float, float]#

Center position in world coordinates.

Beispiele

actor.center = (100, 80)
Typ:

tuple[float, float]

property center_x: float#

X-coordinate of the actor center.

Typ:

float

property center_y: float#

Y-coordinate of the actor center.

Typ:

float

class_image: str = ''#
property class_name: str#

Klassenname dieser Actor-Instanz.

property collision_type: str#

Kollisionsstrategie, die dieser Actor verwendet.

Werte:

default: Welt-Standard verwenden. tile: Actors auf demselben Tile finden. rect: Begrenzungsrechtecke prüfen. static-rect: zwischengespeicherte Begrenzungsrechtecke prüfen. circle: Begrenzungskreise prüfen. mask: überlappende Bildmasken prüfen.

Beispiele

actor.collision_type = "rect"

if actor.detect(wall):
    actor.undo_move()
Typ:

str

property color#

Fill color of the actor as RGBA tuple.

Das Setzen dieses Werts aktiviert auch das Füllen des Kostüms.

Hinweise

  • Alias: Actor.color

  • Das Füllen eines Bildkostüms ersetzt den sichtbaren Bildinhalt.

property costume: Costume#

Current active costume.

Beispiele

actor.costume.is_rotatable = False
Typ:

Costume

property costume_count: int#

Anzahl der Kostüme, die dem Actor zugeordnet sind.

Beispiele

actor.add_costume((255, 0, 0))
print(actor.costume_count)
Typ:

int

property costumes: CostumesManager#

Manager, der alle Kostüme des Actors enthält.

Beispiele

for costume in actor.costumes:
    costume.border = 1
Typ:

CostumesManager

classmethod create_on_world(world)[Quellcode]#

Create an actor on a specific world.

Parameter:

world – World to place the actor on.

Rückgabe:

The created actor.

Beispiele

actor = Actor.create_on_world(world)
detect(*args, **kwargs)[Quellcode]#

Gibt den ersten erkannten Actor zurück.

Rückgabetyp:

Optional[Actor]

Parameter:
  • args – Positionsargumente, die an detect_all() weitergegeben werden.

  • kwargs – Schlüsselwortargumente, die an detect_all() weitergegeben werden.

Rückgabe:

Erster passender Actor oder None.

Beispiele

wall = player.detect(Wall)
if wall:
    player.undo_move()

coin = player.detect(Coin)
if coin:
    player.score += 1
    coin.remove()
detect_actor_at(direction=None, distance=0, actors=None)[Quellcode]#

Gibt den ersten Actor an einem Abstand von diesem Actor zurück.

Rückgabetyp:

Actor

Parameter:
  • direction – Direction to check.

  • distance – Abstand vom Mittelpunkt des Actors.

  • actors – Optional actor filter.

Rückgabe:

Erster passender Actor oder None.

Beispiele

wall = player.detect_actor_at("right", 20, Wall)
if wall:
    player.undo_move()
detect_actor_in_front(actors=None, distance=1)[Quellcode]#

Return the first actor directly in front.

Rückgabetyp:

Actor

Parameter:
  • actors – Optional actor filter.

  • distance – Distance in front of the actor.

Rückgabe:

Erster passender Actor oder None.

Beispiele

wall = player.detect_actor_in_front(Wall)
if wall:
    player.turn_left()
detect_actors_at(direction=None, distance=0, actors=None)[Quellcode]#

Gibt alle Actors an einem Abstand von diesem Actor zurück.

Rückgabetyp:

list

Parameter:
  • direction – Zu prüfende Richtung; weglassen, um die Actor-Position zu verwenden.

  • distance – Abstand vom Mittelpunkt des Actors.

  • actors – Optional actor filter.

Rückgabe:

List of matching actors.

Beispiele

@player.register
def on_key_pressed_right(self):
    if not self.detect_actors_at("right", 20, Wall):
        self.move_in_direction("right", 5)
detect_actors_in_front(actors=None, distance=1)[Quellcode]#

Gibt alle Actors direkt vor diesem Actor zurück.

Rückgabetyp:

list

Parameter:
  • actors – Optional actor filter.

  • distance – Distance in front of the actor.

Rückgabe:

Matching actors.

Beispiele

enemies = player.detect_actors_in_front(Enemy)
for enemy in enemies:
    player.move_away(enemy, 3)
detect_all(actors=None, direction=0, distance=0)[Quellcode]#

Gibt alle Actors zurück, die an einem Abstand von diesem Actor erkannt werden.

Rückgabetyp:

List[Actor]

Parameter:
  • actors – Optionaler Actor-Filter; verwende None für alle Actors.

  • direction – Direction to check.

  • distance – Abstand vom Mittelpunkt des Actors.

Rückgabe:

All matching actors found by the sensor.

Beispiele

coins = player.detect_all(Coin)
for coin in coins:
    coin.remove()

walls_ahead = player.detect_all(Wall, direction="right", distance=10)
detect_borders(distance=0)[Quellcode]#

Return borders detected near the actor.

Rückgabetyp:

List

Parameter:

distance – Distance in front of the actor to check.

Rückgabe:

Liste von Randnamen wie "left", "right", "top" oder "bottom".

Beispiele

@ball.register
def act(self):
    self.move()
    borders = self.detect_borders()
    if borders:
        self.bounce_from_border(borders)
detect_bottom_border()[Quellcode]#

Gibt zurück, ob der Actor den unteren Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True, wenn der untere Rand erkannt wird.

detect_color(color=None)[Quellcode]#

Gibt zurück, ob der Actor eine Hintergrundfarbe erkennt.

Rückgabetyp:

bool

Parameter:

color – Optionales RGB-/RGBA-Farbtupel. Wenn es weggelassen wird, wird jede Farbe erkannt.

Rückgabe:

True, wenn die Farbe am Mittelpunkt des Actors erkannt wird.

Beispiele

@player.register
def act(self):
    if self.detect_color((0, 0, 0)):
        self.remove()
detect_color_at(direction=None, distance=0)[Quellcode]#

Gibt Hintergrundfarben an einem Abstand vom Actor zurück.

Rückgabetyp:

Union[Tuple, List]

Parameter:
  • direction – Zu prüfende Richtung; weglassen, um die Actor-Position zu verwenden.

  • distance – Abstand vom Mittelpunkt des Actors.

Rückgabe:

Color or colors found by the sensor.

Beispiele

color = actor.detect_color_at("right", 5)
detect_left_border()[Quellcode]#

Gibt zurück, ob der Actor den linken Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True if the left border is detected.

detect_pixel(position)[Quellcode]#

Gibt zurück, ob der Actor ein Bildschirmpixel überlappt.

Rückgabetyp:

bool

Parameter:

position – Pixel position as (x, y).

Rückgabe:

True if the actor overlaps the pixel.

Beispiele

@actor.register
def on_mouse_left(self, position):
    if self.detect_pixel(position):
        self.hide()
detect_point(position)[Quellcode]#

Gibt zurück, ob der Actor einen Punkt in der Welt überlappt.

Rückgabetyp:

bool

Parameter:

position – World position as (x, y).

Rückgabe:

True, wenn der Actor den Punkt überlappt.

Beispiele

if actor.detect_point((100, 80)):
    actor.hide()
detect_rect(rect)[Quellcode]#

Gibt zurück, ob der Actor ein Rechteck überlappt.

Parameter:

rect – Rectangle as (x, y, width, height) or pygame.Rect.

Rückgabe:

True, wenn der Actor das Rechteck überlappt.

detect_right_border()[Quellcode]#

Gibt zurück, ob der Actor den rechten Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True, wenn der rechte Rand erkannt wird.

detect_top_border()[Quellcode]#

Gibt zurück, ob der Actor den oberen Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True if the top border is detected.

detecting_bottom_border()[Quellcode]#

Gibt zurück, ob der Actor den unteren Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True, wenn der untere Rand erkannt wird.

detecting_left_border()[Quellcode]#

Gibt zurück, ob der Actor den linken Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True if the left border is detected.

detecting_right_border()[Quellcode]#

Gibt zurück, ob der Actor den rechten Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True, wenn der rechte Rand erkannt wird.

detecting_top_border()[Quellcode]#

Gibt zurück, ob der Actor den oberen Rand berührt.

Rückgabetyp:

bool

Rückgabe:

True if the top border is detected.

property direction: int#

Actor-Richtung in der Miniworlds-/Scratch-Konvention.

Häufige Werte sind 0 oder "up", 90 oder "right", -90 oder "left" und 180 oder "down".

Beispiele

@player.register
def on_key_down(self, key):
    if "left" in key:
        self.direction = "left"
    elif "right" in key:
        self.direction = "right"
    self.move()

actor.direction = 45
actor.move()
Typ:

int

property direction_at_unit_circle: int#

Richtung in der Einheitskreis-Konvention.

In dieser Konvention zeigt 0 nach rechts und 90 nach oben.

Beispiele

actor.direction_at_unit_circle = 0
Typ:

int

face(direction)[Quellcode]#

Schülerfreundlicher Alias für set_direction(direction).

fill(value)[Quellcode]#

Füllfarbe für Ränder und Linien festlegen

property fill_color#

Fill color of the actor as RGBA tuple.

Das Setzen dieses Werts aktiviert auch das Füllen des Kostüms.

Hinweise

  • Alias: Actor.color

  • Das Füllen eines Bildkostüms ersetzt den sichtbaren Bildinhalt.

flip_x()[Quellcode]#

Spiegelt das Kostüm horizontal und dreht den Actor um.

Rückgabetyp:

int

Rückgabe:

The new actor direction.

Beispiele

if actor.detect_borders():
    actor.flip_x()
classmethod from_center(center_position, *args, **kwargs)[Quellcode]#

Create an actor positioned by its center.

Parameter:

center_position – Center position as (x, y).

Rückgabe:

The created actor.

Beispiele

actor = Actor.from_center((100, 80))
classmethod from_topleft(topleft_position, *args, **kwargs)[Quellcode]#

Create an actor positioned by its top-left corner.

Parameter:

topleft_position – Top-left position as (x, y).

Rückgabe:

The created actor.

Beispiele

actor = Actor.from_topleft((20, 40))
get_distance_to(obj)[Quellcode]#

Gibt den Abstand zu einem anderen Actor oder zu einer Position zurück.

Rückgabetyp:

float

Parameter:

obj – Actor oder Position

Rückgabe:

Der Abstand zwischen dem Actor (gemessen von actor.center) zum Actor oder zur Position.

Rückgabetyp:

float

get_local_rect()[Quellcode]#

Gibt das Actor-Rechteck in kamera-lokalen Koordinaten zurück.

Rückgabetyp:

Rect

go_to(position)[Quellcode]#

Schülerfreundlicher Alias für move_to(position).

has_costume()[Quellcode]#

Gibt True zurück, wenn der Actor aktuell ein Kostüm hat.

Rückgabetyp:

bool

property height#

Actor height in pixels.

Beispiele

actor.height = 60
Typ:

float

hide()[Quellcode]#

Verbirgt einen Actor (der Actor wird unsichtbar)

property is_blockable#

Ob dieser Actor von blockierenden Actors gestoppt wird.

Beispiele

player.is_blockable = True
wall.is_blocking = True
Typ:

bool

property is_blocking#

Whether this actor blocks blockable actors.

Beispiele

wall.is_blocking = True
Typ:

bool

property is_filled#

Ist der Actor mit Farbe gefüllt?

property is_flipped: bool#

Whether the current costume is mirrored horizontally.

Beispiele

actor.is_flipped = True
Typ:

bool

is_inside_world()[Quellcode]#

Gibt zurück, ob der Actor vollständig innerhalb der Welt liegt.

Rückgabe:

True, wenn das gesamte Actor-Rechteck innerhalb der Welt liegt.

property is_rotatable: bool#

Whether the costume rotates with the actor direction.

Die Actor-Richtung ändert sich auch dann, wenn dies False ist; nur das gezeichnete Kostüm bleibt ungedreht.

Beispiele

actor.is_rotatable = False
actor.direction = "right"
Typ:

bool

property last_direction: int#

Richtungswert aus dem vorherigen Frame.

property last_position: Tuple[float, float]#

Actor center from the previous frame.

Beispiele

if actor.center != actor.last_position:
    print("actor moved")
Typ:

tuple[float, float]

property local_center: Tuple[float, float]#

Actor center in camera-local coordinates.

Typ:

tuple[float, float]

move(distance=0, direction=None)[Quellcode]#

Bewegt den Actor.

Parameter:
  • distance – Number of steps to move.

  • direction – Optionale Richtung. Wenn sie weggelassen wird, wird die aktuelle Actor-Richtung verwendet.

Rückgabe:

The moved actor.

Beispiele

actor.direction = "right"
actor.move(5)
move_away(target, distance=1)[Quellcode]#

Move away from a target actor or position.

Parameter:
  • target – Target actor or position.

  • distance – Schrittweite.

Rückgabe:

The moved actor.

Beispiele

@player.register
def act(self):
    if self.detect(enemy):
        self.move_away(enemy, 3)
move_back(distance)[Quellcode]#

Bewegt den Actor rückwärts.

Parameter:

distance – Anzahl der Schritte rückwärts.

Rückgabe:

The actor itself.

Beispiele

actor.move()
if actor.detect(Wall):
    actor.move_back(5)
move_forward(distance=0)[Quellcode]#

Schülerfreundlicher Alias für move(distance).

move_in_direction(direction, distance=1)[Quellcode]#

Bewegt den Actor in eine Richtung.

direction kann eine Zahl, ein Richtungsstring oder eine Zielposition sein.

Parameter:
  • direction – Richtungswinkel, Richtungsname oder Zielposition.

  • distance – Number of steps to move.

Rückgabe:

The moved actor.

Beispiele

@player.register
def on_key_pressed(self, key):
    if "right" in key:
        self.move_in_direction("right", 5)
    if "up" in key:
        self.move_in_direction("up", 5)

player.move_in_direction((100, 80), 2)
move_to(position)[Quellcode]#

Bewegt den Actor zu einer Position in der Welt.

Parameter:

position – Zielposition als (x, y).

Rückgabe:

The moved actor.

Beispiele

@player.register
def on_clicked_left(self, position):
    self.move_to(position)
move_towards(target, distance=1)[Quellcode]#

Move toward a target actor or position.

Parameter:
  • target – Target actor or position.

  • distance – Schrittweite.

Rückgabe:

The moved actor.

Beispiele

enemy.move_towards(player, 2)
enemy.move_towards((100, 80), 2)
move_vector(vector)[Quellcode]#

Bewegt den Actor um einen Vektor.

Parameter:

vector – Vektorartige Bewegungsänderung.

Rückgabe:

The moved actor.

Beispiele

actor.move_vector(Vector(2, 0))
new_costume()[Quellcode]#

Erstellt ein neues leeres Kostüm und hängt es an diesen Actor an.

next_costume()[Quellcode]#

Switch to the next costume.

Rückgabe:

The new active costume.

Beispiele

actor.next_costume()
on_clicked_left(position)[Quellcode]#

Called when the actor is clicked with the left mouse button.

Parameter:

position – Current mouse position as (x, y).

Beispiele

@actor.register
def on_clicked_left(self, position):
    self.hide()
on_clicked_right(position)[Quellcode]#

Called when the actor is clicked with the right mouse button.

Parameter:

position – Current mouse position as (x, y).

Beispiele

@actor.register
def on_clicked_right(self, position):
    self.remove()
on_detecting_actor(actor)[Quellcode]#

Wird aufgerufen, wenn dieser Actor einen anderen Actor erkennt.

Parameter:

actor – Detected actor.

Beispiele

@player.register
def on_detecting_actor(self, actor):
    if isinstance(actor, Coin):
        actor.remove()
on_detecting_borders(borders)[Quellcode]#

Called when the actor detects one or more world borders.

Parameter:

borders – Randnamen, zum Beispiel ["left", "top"].

Beispiele

@player.register
def on_detecting_borders(self, borders):
    self.bounce_from_border(borders)
on_detecting_not_on_world()[Quellcode]#

Alias for on_not_detecting_world.

Beide Namen werden akzeptiert, damit ältere Unterrichtsmaterialien und neuere Beispiele die jeweils passendere Formulierung verwenden können.

Beispiele

@actor.register
def on_detecting_not_on_world(self):
    self.remove()
on_detecting_world()[Quellcode]#

Called when the actor is inside the world.

Beispiele

@player.register
def on_detecting_world(self):
    self.move()
on_key_down(key)[Quellcode]#

Wird einmal aufgerufen, wenn eine Taste gedrückt wird.

Registriere on_key_down_<letter> (zum Beispiel on_key_down_a), wenn du nur auf einen bestimmten Buchstaben reagieren möchtest.

Für Pfeiltasten verwende on_key_down_left, on_key_down_right, on_key_down_up oder on_key_down_down.

Parameter:

key – Liste von Tastennamen-Varianten, zum Beispiel ["A", "a"] oder ["left"].

Beispiele

@player.register
def on_key_down(self, key):
    if "left" in key:
        self.direction = "left"
    elif "right" in key:
        self.direction = "right"
    self.move()

@player.register
def on_key_down_space(self):
    self.send_message("jump")
on_key_pressed(key)[Quellcode]#

Wird in jedem Frame wiederholt aufgerufen, solange eine Taste gedrückt gehalten wird.

Das ist die richtige Wahl für flüssige, kontinuierliche Bewegung. Wie on_key_down unterstützt dieses Ereignis Handler für einzelne Tasten wie on_key_pressed_w oder on_key_pressed_left.

Parameter:

key – Liste der aktuell gehaltenen Tastennamen-Varianten, zum Beispiel ["W", "w"] oder ["up"].

Beispiele

@player.register
def on_key_pressed(self, key):
    if "left" in key:
        self.x -= 3
    elif "right" in key:
        self.x += 3
on_key_up(key)[Quellcode]#

Wird einmal aufgerufen, wenn eine gedrückte Taste losgelassen wird.

Parameter:

key – Liste von Tastennamen-Varianten im selben Format wie bei on_key_down().

Beispiele

@player.register
def on_key_up(self, key):
    if "space" in key:
        self.stop_animation()
on_mouse_leave(position)[Quellcode]#

Wird aufgerufen, wenn der Mauszeiger den Bereich des Actors verlässt.

Parameter:

position – The mouse position when it left the actor.

Beispiele

@actor.register
def on_mouse_leave(self, position):
    self.costume.transparency = 0
on_mouse_left(position)[Quellcode]#

Wird aufgerufen, wenn die linke Maustaste geklickt wird.

Das Ereignis wird für den Klick selbst ausgelöst, unabhängig davon, ob der Klick auf dem Actor lag. Verwende detect_pixel(position), wenn du nur Klicks auf den Actor-Körper behandeln möchtest.

Parameter:

position – Current mouse position as (x, y).

on_mouse_left_down(position)[Quellcode]#

Wird aufgerufen, wenn die linke Maustaste gedrückt wird.

Parameter:

position – Current mouse position as (x, y).

on_mouse_left_released(position)[Quellcode]#

Called when the left mouse button is released.

Parameter:

position – Current mouse position as (x, y).

Beispiele

@actor.register
def on_mouse_left_released(self, position):
    self.center = position
on_mouse_motion(position)[Quellcode]#

Wird aufgerufen, wenn die Maus bewegt wird.

Das Ereignis wird allgemein für Mausbewegungen ausgelöst. Verwende detect_pixel(position), wenn du nur Bewegungen über dem Actor-Körper behandeln möchtest.

Parameter:

position – Current mouse position as (x, y).

on_mouse_over(position)[Quellcode]#

Wird aufgerufen, wenn der Mauszeiger den Actor-Bereich betritt oder sich darüber bewegt.

Parameter:

position – Current mouse position as (x, y).

Beispiele

@actor.register
def on_mouse_over(self, position):
    self.costume.transparency = 100
on_mouse_right(position)[Quellcode]#

Wird aufgerufen, wenn die rechte Maustaste geklickt wird.

Verwende detect_pixel(position), wenn du nur Klicks auf den Actor-Körper behandeln möchtest.

Parameter:

position – Current mouse position as (x, y).

on_mouse_right_down(position)[Quellcode]#

Wird aufgerufen, wenn die rechte Maustaste gedrückt wird.

Parameter:

position – Current mouse position as (x, y).

on_mouse_right_released(position)[Quellcode]#

Called when the right mouse button is released.

Parameter:

position – Current mouse position as (x, y).

on_not_detecting_world()[Quellcode]#

Wird aufgerufen, wenn der Actor die Welt nicht berührt, also außerhalb der Weltgrenzen liegt.

Nützlich, um Actors zu entfernen, die aus dem sichtbaren Bereich fliegen.

Beispiele

@rocket.register
def on_not_detecting_world(self):
    self.remove()
on_shape_change()[Quellcode]#

Hook, der aufgerufen wird, wenn sich formbezogene Actor-Eigenschaften ändern.

property orientation: float#

Ausrichtungsversatz des Kostüms in Grad.

Beispiele

actor.orientation = -90
Typ:

float

property origin#

Aktueller Ursprungmodus für Größen- und Positionsoperationen.

point_towards_actor(other)[Quellcode]#

Point the actor toward another actor.

Rückgabetyp:

int

Parameter:

other – Ziel-Actor.

Rückgabe:

The new direction.

Beispiele

enemy.point_towards_actor(player)
point_towards_position(destination)[Quellcode]#

Point the actor toward a position.

Rückgabetyp:

Union[int, float]

Parameter:

destination – Zielposition als (x, y).

Rückgabe:

The new direction.

Beispiele

def act(self):
    mouse = self.world.mouse.get_position()
    if mouse:
        self.point_towards_position(mouse)
    self.move()
property position: Tuple[float, float]#

Die Position des Actors als Position(x, y)

register_sensor(*args, **kwargs)[Quellcode]#

Diese Methode wird für den Decorator @register_sensor verwendet.

remove(kill=True)[Quellcode]#

Remove this actor from its world.

Rückgabetyp:

defaultdict

Parameter:

kill – Ob auch das zugrunde liegende pygame-Sprite entfernt werden soll.

Rückgabe:

Removed actor data from the world connector.

Beispiele

coin = actor.detect(Coin)
if coin:
    coin.remove()
remove_costume(source=None)[Quellcode]#

Remove a costume.

Parameter:

source – Kostümindex oder Kostümobjekt. Wenn der Wert weggelassen wird, wird das aktuelle Kostüm entfernt.

Beispiele

actor.remove_costume()
actor.remove_costume(0)
reset_costumes()[Quellcode]#

Entfernt alle Kostüme und setzt den Appearance-Zustand zurück.

scale_height(value)[Quellcode]#

Skaliert die Actor-Höhe mit einem Faktor.

Parameter:

value – Scale factor.

Beispiele

actor.scale_height(0.5)
scale_width(value)[Quellcode]#

Skaliert die Actor-Breite mit einem Faktor.

Parameter:

value – Scale factor.

Beispiele

actor.scale_width(1.5)
send_message(message)[Quellcode]#

Sendet eine Nachricht über das Ereignissystem der Welt.

Parameter:

message – Name der Nachricht.

Beispiele

player.send_message("hit")

@enemy.register
def on_message(self, message):
    if message == "hit":
        self.remove()
set_background_color(color)[Quellcode]#

Setzt eine Hintergrundfarbe hinter das Kostümbild des Actors.

set_costume(costume)[Quellcode]#

Setzt das aktuelle Kostüm über einen Index, eine Quelle oder ein Appearance-Objekt.

set_direction(direction)[Quellcode]#

Point the actor in a direction.

Rückgabetyp:

float

Parameter:

direction – Richtung als Winkel oder String wie "up", "right", "down" oder "left".

Rückgabe:

The new direction.

Beispiele

actor.set_direction("left")
actor.set_direction(45)
set_position(value)[Quellcode]#

Setzt die Actor-Position in Weltkoordinaten.

set_size(value)[Quellcode]#

Set actor size.

Parameter:

value – Size as (width, height) or a scalar size.

Beispiele

actor.set_size((40, 30))
set_world(new_world)[Quellcode]#

Verschiebt den Actor in eine andere Welt und gibt den Actor zurück.

Rückgabetyp:

Actor

show()[Quellcode]#

Zeigt einen Actor an (ein unsichtbarer Actor wird sichtbar)

property size: tuple#

Actor size as (width, height).

Beispiele

actor.size = (40, 30)
Typ:

tuple[float, float]

property static#

Soll der Actor auf Ereignisse reagieren? Du kannst diese Option für zusätzliche Performance deaktivieren.

stop_animation()[Quellcode]#

Stop the current costume animation.

Beispiele

actor.animate_loop()
actor.stop_animation()
property stroke_color#

Border color as RGBA tuple.

Hinweise

  • Setze Actor.border auf einen Wert größer als 0, um einen sichtbaren Rand zu erhalten.

  • Alias: Actor.stroke_color.

switch_costume(source)[Quellcode]#

Switch to another costume.

Rückgabetyp:

Costume

Parameter:

source – Costume index or costume object.

Rückgabe:

The new active costume.

Beispiele

actor.add_costume("images/idle.png")
actor.add_costume("images/run.png")
actor.switch_costume(1)
switch_origin(value)[Quellcode]#

Switch the actor origin while preserving its screen position.

Parameter:

value"center" oder "topleft".

Beispiele

actor.switch_origin("center")
property topleft: Tuple[float, float]#

Top-left position in world coordinates.

Beispiele

actor.topleft = (10, 20)
Typ:

tuple[float, float]

property topleft_x: float#

X-Koordinate der linken oberen Ecke des Actors.

Typ:

float

property topleft_y: float#

Y-Koordinate der linken oberen Ecke des Actors.

Typ:

float

touching(*args, **kwargs)[Quellcode]#

Schülerfreundlicher Alias für detect(...).

touching_all(*args, **kwargs)[Quellcode]#

Schülerfreundlicher Alias für detect_all(...).

turn(degrees=90)[Quellcode]#

Schülerfreundlicher Alias für turn_right(degrees).

turn_left(degrees=90)[Quellcode]#

Turn the actor left.

Rückgabetyp:

int

Parameter:

degrees – Gradzahl für die Drehung.

Rückgabe:

The new direction.

Beispiele

actor.turn_left()
actor.turn_left(45)
turn_right(degrees=90)[Quellcode]#

Turn the actor right.

Parameter:

degrees – Gradzahl für die Drehung.

Rückgabe:

The new direction.

Beispiele

actor.turn_right()
actor.turn_right(45)
undo_move()[Quellcode]#

Mache den letzten Zug rückgängig.

Rückgabe:

The moved actor.

Beispiele

def on_detecting_wall(self, wall):
    self.undo_move()
property width#

Actor width in pixels.

Beispiele

actor.width = 80
Typ:

float

property world#

Welt, zu der dieser Actor gehört.

property x: float#

Actor x-position.

Typ:

float

property y: float#

Actor y-position.

Typ:

float