Position, Ausrichtung und Bewegung#

In diesem Kapitel lernst du, wie du Position und Ausrichtung eines Tokens verändern kannst, um es zu bewegen.

move() und position#

Es gibt zwei Möglichkeiten ein Token zu bewegen:

  • Mit dem position-Attribut kannst du direkt die Position eines Tokens verändern.

  • Die Funktion move bewegt dein Token in die aktuelle Richtung. Die aktuelle Richtung kannst du mit token.direction festlegen, z.B. so:

position#

Die Position kannst du z.B. so verändern:

@player.register
def act(self):
    self.position = (100, 200) # places token at x = 100, y = 200

Beispiel#

In diesem Beispiel wird das Token immer wieder (Alle 50 Frames) an eine zufällige Position bewegt:

import miniworldmaker as mwm
import random

board = mwm.Board(400, 400)
board.add_background("images/grass.jpg")
player = mwm.Token((100, 100))
player.add_costume("images/target.png")
player.orientation = -90

@player.register
def act(self):
    if self.board.frame % 50 == 0: # every 50th frame:
        player.position = (random.randint(0, 400), random.randint(0, 400))

board.run()

x und y#

Alternativ kannst du auch direkt mit den Attributen x und y einzelne Koordinaten des Tokens verändern:

@player.register
def act(self):
    self.x = 100 # places token at x = 100.

Beispiel:

import miniworldmaker as mwm

board = mwm.Board()
board.add_background("images/grass.jpg")
player = mwm.Token((90,90))
player.add_costume("images/player.png")
player.costume.orientation = -90 
@player.register
def on_key_down_w(self):
    player.y = player.y - 1

player2 = mwm.Token((180,180))
player2.add_costume("images/player.png")
player2.costume.orientation = -90 
@player2.register
def on_key_pressed_s(self):
    player2.y = player2.y - 1
    
board.run()

Die move()-Funktion#

Die Funktion move() kannst du in Kombination mit dem Attribut direction oder der Funktion turn_left bzw. turn_right aufrufen:

@player.register
def act(self):
    self.direction = "right" # can also be 90
    self.move()
    # Alternative with turn_left:
    self.turn_left(30) # turns 30° left
    self.move()

Beispiel:

Das Token schaut nach rechts und bewegt sich dann einen Schritt vor:

import miniworldmaker as mwm

board = mwm.Board()
board.add_background("images/grass.jpg")
player = mwm.Token()
player.add_costume("images/player.png")
player.orientation = -90 # correct image orientation
@player.register
def act(self):
    self.direction = "right"
    self.move()

board.run()

move_left, move_right, …#

Mit der Funktion move() bewegt sich das Token immer in die aktuelle direction.

Du kannst das Token aber auch direkt in eine Richtung bewegen lassen. Dies geht mit den Befehlen move_right(), move_left(), move_up() und m̀ove_down().

Das Programm oben würde so aussehen:

import miniworldmaker as mwm

board = mwm.Board()
board.add_background("images/grass.jpg")
player = mwm.Token()
player.add_costume("images/player.png")
player.orientation = -90 # correct image orientation
@player.register
def act(self):
    self.move_right()

board.run()

move_in_direction#

Alternativ kannst du das Token mit move_in_direction() auch in eine beliebige Richtung bewegen.

Beispiel: Das Token bewegt sich schräg nach oben

import miniworldmaker as mwm

board = mwm.Board()
board.add_background("images/grass.jpg")
player = mwm.Token((100,100))
player.add_costume("images/player.png")
player.orientation = -90 # correct image orientation
@player.register
def act(self):
    self.move_in_direction(45)

board.run()

Beispiel: Bewegung in Mausposition#

Das folgende Programm steuert mit Hilfe der Funktion move_in_direction() das Token in Richtung des Mauszeigers:

import miniworldmaker as mwm

board = mwm.Board(400, 400)
board.add_background("images/grass.jpg")
player = mwm.Token()
player.add_costume("images/player.png")
player.orientation = -90

@player.register
def act(self):
    self.move_in_direction(self.board.get_mouse_position())

board.run()

turn_left und turn_right#

Mit turn_left() und turn_right kannst du das Token in eine Richtung drehen.

  • player.turn_left(degrees) - Dreht das Token um degrees Grad nach links.

  • player.turn_right(degrees) - Dreht das Token um degrees Grad nach rechts.

Beispiel:

import miniworldmaker as mwm

board = mwm.Board(400, 400)
board.add_background("images/grass.jpg")
player = mwm.Token((100, 100))
player.add_costume("images/player.png")
player.orientation = -90

@player.register
def act(self):
    self.move()
    
@player.register
def on_key_down_a(self):
    self.turn_left(30)

@player.register
def on_key_down_d(self):
    self.turn_right(30)


board.run()

Direction#

Mit self.direction kannst du die aktuelle Richtung des Tokens abfragen oder ändern

Der Wert degrees kann hier entweder als Zahl oder als Text wie in folgender Grafik angegeben werden (0: oben, 180, unten, 90 rechts, -90 links):

Move on board

Beispiel:

Im folgenden Beispiel bewegt sich das Token im Kreis:

import miniworldmaker as mwm

board = mwm.Board(400,400)
board.add_background("images/grass.jpg")
player = mwm.Token()
player.add_costume("images/player.png")
player.orientation = -90
player.position = (200, 200)

@player.register
def act(self):
    self.direction = self.board.frame
    self.move()
    

board.run()