Tokens#

Ein Token ist ein Spielstein auf deinem Board.

Alle Objekte auf deinem Board sind Tokens, die auf dem Board bewegt werden können und die miteinander kommunizieren können.

Ein Token erstellen#

Nachdem du das Board erstellt hast, wird nun ein Token, (d.h. eine Spielfigur) auf dem Board platziert. Dies geht so:

import miniworldmaker as mwm

board = mwm.Board(600, 300)
board.add_background("images/grass.png")
token = mwm.Token((0, 0))
token = mwm.Token((100, 200))
board.run()

In der Zeile token = Token((0,0)) wird ein Token an der Position x=0, y=0 erstellt, in der Zeile token = Token((100, 200)) wird ein Token an der Position x=100, y=200 erstellt.

Die Tokens haben noch kein Kostüm, daher werden sie zunächst als lila Rechtecke dargestellt:

Add tokens

Beachte, dass der Ursprung des Koordinatensystems oben links liegt.

Add tokens

Kostüme#

Jedes Token hat ein Costume, welches das Aussehen des Tokens definiert.

Mit add_costume kannst du deinem Token ein Bild als Kostüm hinzufügen. Zuerst musst du diese Bilder dazu in den Unterordner images deines Projekts kopieren, z.B. so:

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

Jetzt kannst du sie so als Kostüm hinzufügen:

import miniworldmaker as mwm

board = mwm.Board(600, 300)
board.add_background("images/grass.png")
token = mwm.Token((0, 0))
token.add_costume("images/player.png")
token = mwm.Token((100, 200))
token.add_costume("images/knight.png")
board.run()

Ausgabe:

Add tokens

Beispiel: Mehrere Kostüme#

Hier werden vier Tokens angelegt, die alle unterschiedliche Kostüme haben:

import miniworldmaker as mwm

board = mwm.Board()
board.add_background("images/grass.jpg")

t1 = mwm.Token((0,20))
t1.add_costume("images/cow.png")
t2 = mwm.Token((40,20))
t2.add_costume("images/chicken.png")
t3 = mwm.Token((80,20))
t3.add_costume("images/dog.png")
t4 = mwm.Token((120,20))
t4.add_costume("images/goat.png")

board.run()

Ausgabe:

Multiple Tokens

FAQ

Typische Probleme:

  • Mein Token ist falsch ausgerichtet, was soll ich tun?

    Ein Token ist dann korrekt ausgerichtet, wenn das Bild nach oben guckt. Wenn das Bild per Default in eine andere Richtung ausgerichtet ist, dann hast du zwei Möglichkeiten

    • Du kannst das Bild mit einem Bildeditor drehen

    • Du kannst in Miniworldmaker die Orientierung des Kostüms ändern. Dies geht mit my_token.costume.orientation = 90 Setze für orientation den passenden Wert, damit das Kostüm korrekt ausgerichtet ist.

    Manchmal ist es auch nötig, einzustellen, dass sich zwar das Token drehen kann, das Kostüm aber immer gleich ausgerichtet sein soll. Dies geht mit my_token.costume.is_rotatable = False.

Die Position#

Das Token wurde in der oberen linken Ecke erstellt. Wenn du das Token an einer beliebigen Stelle erstellen willst, dann musst du beim Aufrufen eine Position übergeben.

Der miniworldmaker verwendet dazu ein Koordinatensystem, die obere Linke Ecke ist die Position (0,0): Als position eines Tokens wird immer die obere linke Ecke des Tokens bezeichnet.

Auf einem TiledBoard verhält es sich etwas anderes. Hier ist die Position (0,0) die Kachel oben links in der Ecke; Mit my_token.position fragst du hier nicht die pixelgenaue Position ab, sondern die Kachel, auf der das Token liegt.

Coordinates

Die Position ändern#

Die Position eines Tokens kannst du mit Hilfe des Attributs position ändern.

position = (x, y) setzt die Position des Tokens an die Koordinaten (x, y).

Beispiel:#

Auf einem normalen Board wird die Position so geändert:

import miniworldmaker as mwm

board = mwm.Board()
board.add_background("images/grass.png")
player = mwm.Token()
player.add_costume("images/player.png")
player.position = (100,200)
board.run()

…und so auf einem TiledBoard:

import miniworldmaker as mwm

board = mwm.TiledBoard()
board.columns = 20
board.rows = 8
board.tile_size = 42
board.add_background("images/soccer_green.jpg")
board.speed = 30
player = mwm.Token()
player.add_costume("images/player.png")
player.position = (3,4)
board.run()

Ausgabe:

Token position

Arten von Tokens#

Es gibt einige spezielle Tokens, die du verwenden kannst:

Linien#

Die Syntax zum Zeichnen einer Linie sieht folgendermaßen aus:

  Line(startpoint, endpoint)

Die Parameter startpoint und endpoint sind jeweils Tupel, z.B. (1, 2) für x=1 und y=2.

Wenn du eine Linie von (10,10) zu (100, 200) zeichnen willst so musst du z.B. folgendes schreiben:

import miniworldmaker as mwm

board = mwm.Board()
line = mwm.Line((10,10), (100, 200))
board.run()

A line

Kreise#

Kreise kannst du allgemein folgendermaßen erstellen:

  Circle(position, radius)

Note

Die übergebene Position bei Kreisen ist der Mittelpunkt des Kreises

Wenn du einen Kreis an der Stelle (100,200) mit Radius 20 erstellen willst, musst du folgendes schreiben:

import miniworldmaker as mwm

board = Board()
mwm.Circle((100,200), 20)
board.run()

A circle

Rechteck#

Ein Rechteck wird beschrieben durch Position, Breite und Höhe:

mwm.Rectangle(position, width, height)

Der Parameter position beschreibt die obere linke Ecke des Rechtecks.

Willst du ein Rechteck an der Position (100, 100) mit Breite 20 und Höhe 100 zeichnen, so musst du folgendes schreiben:

import miniworldmaker as mwm

board = mwm.Board(800, 600)
mwm.Rectangle((100, 100), 20, 100)
board.run()

A rectangle

Ellipse#

Ellipsen werden im Prinzip wie Rechtecke beschrieben, d.h. die Ellipse wird dann so gezeichnet, dass sie genau in das Rechteck hineinpasst. width und height beziehen sich hier jeweils auf den Durchmesser der Ellipse

mwm.Ellipse(position, width, height)

Willst du eine Ellipse an der Position (100, 100) mit Breite 20 und Höhe 100 zeichnen, so musst du folgendes schreiben:

import miniworldmaker as mwm

board = mwm.Board(800, 600)
ellipse = mwm.Ellipse((100, 100), 20, 100)
board.run()

An ellipse

Text#

Text-Tokens kannst du folgendermaßen erstellen:

mwm.Text(position, text)

Anschließend kannst du mit font_size die Größe des Textes beeinflussen. Mit width und height kannst du abfragen wie viel Platz der Text einnimmt.

Beispiel:

import miniworldmaker as mwm

board = mwm.Board()

t1 = mwm.Text((50,50), "Hallo")
t2 = mwm.Text((100,150), "Welt")
t2.font_size = 80
t2.x = (board.width - t2.width) / 2 # center text

board.run()

Texts

Number#

Mit Number-Tokens kannst du z.B. Spielstände zeichnen. Du kannst diese folgendermaßen erstellen:

Number(position, text)

Anschließend kannst du mit set_number() die Zahl verändern, mit inc() um eins erhöhen und mit get_number() abfragen.

Beispiel:

import miniworldmaker as mwm

board = mwm.Board()

t1 = mwm.Number((50,50), 1)
t2 = mwm.Number((100,150), 4)
t3 = mwm.Number((200,150), 0)
t2.font_size = 80
t2.inc()
t3.set_number(1001)
print(t3.get_number()) # 1001

board.run()

Numbers