World > Tiled World#

API-Referenz#

class miniworlds.worlds.tiled_world.tiled_world.TiledWorld(x=20, y=16, tile_size=40, empty=False)[Quellcode]#

Grid-based world where actors are placed on tiles.

Eine TiledWorld verwendet Kachelkoordinaten statt Pixelkoordinaten für Actor-Positionen. Actor können auch auf Kachelecken oder Kanten platziert werden.

Beispiele

Create a small grid world:

    from miniworlds import TiledWorld, Actor

    world = TiledWorld(6, 3)
    player = Actor((1, 1))
    player.fill_color = (255, 255, 255)

    @player.register
    def on_key_down_right(self):
        self.move_in_direction("right")

    world.run()
__init__(x=20, y=16, tile_size=40, empty=False)[Quellcode]#

Create a tiled world.

Parameter:
  • x – Number of columns.

  • y – Number of rows.

  • tile_size – Tile size in pixels.

  • empty – If True, tiles, edges, and corners are not created automatically.

Beispiele

world = TiledWorld(8, 6)
empty_world = TiledWorld(8, 6, empty=True)
add_corner_to_world(position, direction)[Quellcode]#

Create and register a corner.

Vorhandene Ecken werden zusammengeführt, wenn mehrere Kacheln dieselbe Ecke teilen.

Parameter:
  • position – Basiskachelposition als (spalte, zeile).

  • direction – Richtungsschlüssel der Ecke, zum Beispiel "nw".

Rückgabe:

Das registrierte Eckenobjekt.

Beispiele

corner = world.add_corner_to_world((2, 3), "nw")
add_edge_to_world(position, direction)[Quellcode]#

Create and register an edge.

Vorhandene Kanten werden zusammengeführt, wenn benachbarte Kacheln dieselbe Kante beschreiben.

Parameter:
  • position – Basiskachelposition als (spalte, zeile).

  • direction – Richtungsschlüssel der Kante, zum Beispiel "n" oder "w".

Rückgabe:

Das registrierte Kantenobjekt.

Beispiele

edge = world.add_edge_to_world((2, 3), "w")
add_tile_to_world(position)[Quellcode]#

Erzeugt und registriert eine Kachel an einer Rasterposition der Welt.

Parameter:

position – Kachelposition als (spalte, zeile).

Rückgabe:

Die erzeugte Kachelinstanz.

Beispiele

tile = world.add_tile_to_world((2, 3))
borders(value)[Quellcode]#

Gibt die Ränder zurück, die von einer Position oder einem Rechteck berührt werden.

Rückgabetyp:

list

Parameter:

value – Zu prüfende Position oder zu prüfendes Rechteck.

Rückgabe:

Liste von Randnamen wie "left" oder "top".

Beispiele

borders = world.borders(actor.position)
clear_tiles()[Quellcode]#

Remove all tiles, corners, and edges.

Verwende empty=True im Konstruktor, wenn alle Kacheln von Anfang an manuell aufgebaut werden sollen.

Beispiele

world = TiledWorld(8, 8, empty=True)
world.add_tile_to_world((0, 0))

world.clear_tiles()
world.add_tile_to_world((1, 1))
property columns: int#

Breite des sichtbaren Weltbereichs in Pixeln.

Beispiele

world.columns = 640
Typ:

int

detect_actor_at_position(position)[Quellcode]#

Return the first actor at a tile position.

Parameter:

position – Kachelposition als (spalte, zeile).

Rückgabe:

Der erste Actor an dieser Position oder None.

Beispiele

actor = world.detect_actor_at_position((2, 3))
detect_actors(position)[Quellcode]#

Gibt alle Actor an einer Weltposition zurück.

Rückgabetyp:

List[Actor]

Parameter:

position – Weltposition als (x, y).

Rückgabe:

Actors found at the position.

Beispiele

actors = world.detect_actors(player.position)
for actor in actors:
    if isinstance(actor, Coin):
        actor.remove()
detect_actors_at_position(position)[Quellcode]#

Gibt alle Actor an einer Kachelposition zurück.

Parameter:

position – Kachelposition als (spalte, zeile).

Rückgabe:

Actor an dieser Position.

Beispiele

actors = world.detect_actors_at_position((2, 3))
dialog#
draw_on_image(image, position)[Quellcode]#

Zeichnet ein Bild auf den Hintergrund der Kachelwelt.

Parameter:
  • image – Das zu zeichnende Bild oder Surface.

  • position – Kachelposition als (spalte, zeile).

Beispiele

world.draw_on_image(surface, (2, 3))
get_actors_from_pixel(position)[Quellcode]#

Gibt alle Actor unter einem Bildschirmpixel zurück.

Rückgabetyp:

List[Actor]

Parameter:

pixel – Bildschirmpixel als (x, y).

Rückgabe:

Actor, deren Bildschirmrechteck den Pixel überlappt.

Beispiele

@world.register
def on_mouse_left(self, position):
    for actor in self.get_actors_from_pixel(position):
        actor.hide()
get_corner(position, direction=None)[Quellcode]#

Return a corner by corner position or tile position plus direction.

Parameter:
  • position – Corner position, or tile position when direction is set.

  • direction – Optionale Eckenrichtung, zum Beispiel "nw".

Rückgabe:

Die passende Ecke.

Verursacht:

CornerNotFoundError – Wenn an der aufgelösten Position keine Ecke existiert.

Beispiele

corner = world.get_corner(actor.position)
corner = world.get_corner((3, 1), "nw")
get_corner_points()[Quellcode]#
Rückgabetyp:

Dict[Tuple, Tuple[float, float]]

get_edge(position, direction=None)[Quellcode]#

Return an edge by edge position or tile position plus direction.

Parameter:
  • position – Edge position, or tile position when direction is set.

  • direction – Optionale Kantenrichtung, zum Beispiel "n" oder "w".

Rückgabe:

Die passende Kante.

Beispiele

edge = world.get_edge(actor.position)
edge = world.get_edge((5, 1), "w")
get_edge_points()[Quellcode]#
Rückgabetyp:

Dict[Tuple, Tuple[float, float]]

get_from_pixel(position)[Quellcode]#

Gibt die Kachelposition zu einem Bildschirmpixel zurück.

Parameter:

position – Pixelposition als (x, y).

Rückgabe:

Kachelposition oder None, wenn der Pixel außerhalb der Kameraansicht liegt.

Beispiele

tile_position = world.get_from_pixel((80, 120))
get_tile(position)[Quellcode]#

Gibt die Kachel an einer Kachelposition zurück.

Parameter:

position – Kachelposition als (spalte, zeile).

Rückgabe:

Die Kachel an der Position.

Verursacht:

TileNotFoundError – Wenn an der Position keine Kachel existiert.

Beispiele

tile = world.get_tile(actor.position)
tile = world.get_tile((1, 1))

if tile.get_actors():
    print("Tile is occupied")
get_tile_from_pixel(position)[Quellcode]#

Gibt die Kachel unter einem Bildschirmpixel zurück.

Parameter:

position – Pixelposition als (x, y).

Rückgabe:

Tile under the pixel.

Beispiele

tile = world.get_tile_from_pixel((80, 120))
property grid#

Ob das Raster-Overlay angezeigt wird.

Beispiele

world.grid = True
Typ:

bool

is_corner(position)[Quellcode]#

Gibt zurück, ob eine Position eine Eckenposition ist.

Beispiele

if world.is_corner(actor.position):
    actor.hide()
is_edge(position)[Quellcode]#

Gibt zurück, ob eine Position eine Kantenposition ist.

Beispiele

if world.is_edge(actor.position):
    actor.hide()
is_tile(position)[Quellcode]#

Gibt zurück, ob eine Position eine Kachelposition ist.

Beispiele

if world.is_tile((1, 1)):
    tile = world.get_tile((1, 1))
property rows: int#

Height of the visible world area in pixels.

Beispiele

world.rows = 480
Typ:

int

set_columns(value)[Quellcode]#

Set the visible world width in pixels.

Parameter:

value – New width in pixels.

Beispiele

world.set_columns(640)
set_rows(value)[Quellcode]#

Set the visible world height in pixels.

Parameter:

value – New height in pixels.

Beispiele

world.set_rows(480)
set_tile_size(value)[Quellcode]#

Set the tile size in pixels.

Parameter:

value – New tile size in pixels.

Beispiele

world.set_tile_size(32)
property tile_size: int#

Size of one tile in pixels.

Beispiele

world.tile_size = 32
Typ:

int

to_pixel(position, size=(0, 0), origin=(0, 0))[Quellcode]#

Wandelt eine Kachelposition in Pixelkoordinaten um.

Parameter:
  • position – Kachelposition als (spalte, zeile).

  • size – Für Kompatibilität reserviert.

  • origin – Pixelversatz, der zur umgerechneten Position addiert wird.

Rückgabe:

Pixelposition als (x, y).

Beispiele

pixel = world.to_pixel((2, 3))