Events
Contents
Events#
Events are a central concept of the Miniworldmaker:
Events can be used to query inputs (e.g. mouse clicks or keyboard inputs).
With events, objects can communicate with each other (e.g. via messages)
Register an event#
For the board or a player to react to an event, it must be registered. be registered.
This works in the same way as the act()
method:
@player.register
def on_key_down_w(self):
self.move()
This registers the on_key_down_w
method, which checks whether the
key w has been pressed.
As soon as the key is pressed, the token player
moves one step forward.
step forward.
As before: Each registered method needs as first parameter the keyword self
.
the keyword self
as first parameter and with this keyword you can
access attributes and methods of the object within the method.
on_key_down and on_key_pressed#
There are two functions on_key_down(self, key)
and
on_key_pressed(self, key)
:
The function
on_key_down
is called exactly once when the key is pressed.The function
on_key_pressed
, on the other hand, is called again and again, as long as the key is pressed.
Note
Both functions exist in the variant on_key_down_b(self)
,
on_key_pressed_c(self)
to query the pressing of a concrete key, and
as well as in the variant on_key_down(self, key)
.
on_key_pressed(self, key)
to process all keyboard queries.
Example#
import miniworldmaker
board = miniworldmaker.TiledBoard()
board.columns = 20
board.rows = 8
board.tile_size = 42
board.add_background("images/soccer_green.jpg")
board.speed = 30
player = miniworldmaker.token()
player.add_costume("images/player_1.png")
@player.register
def on_key_down_w(self):
self.move()
@player.register
def on_key_down_a(self):
self.turn_left()
@player.register
def on_key_down_d(self):
self.turn_right()
@player.register
def on_key_down_s(self):
self.move_back()
board.run()
Output#
Send messages#
With send message(self, message)
you can send a global message to
all objects and the board. These messages can be processed with
on_message
to be processed.
Example:
@player.register
def on_message(self, message):
if message == "Example message":
do_something()