Ereignisse¶
Es gibt mehrere wichtige Methoden, die du mit Inhalten füllen kannst:
Spezielle Event-Methoden¶
Die act() - Methode¶
Die Act-Methode wird in kurzen Abständen immer wieder aufrufen. Hier kannst du Code platzieren, der immer wieder ausgeführt werden soll, z.B.:
def act(self):
if not self.look_on_board(direction = "forward"):
self.turn_left(90)
self.move()
Der Actor schaut ein Feld nach vorne und überprüft, ob dieses noch auf dem Spielfeld liegt. Wenn ja, geht er ein Feld vorwärts. Andernfalls dreht er sich um 90° nach links.
Sensing-Methoden¶
Jedesmal, wenn ein Akteur etwas anderes aufspürt, werden seine entsprechenden sensing-Methoden aufgerufen:
- on_sensing_tokens(token_list): Spürt alle Tokens am selben Ort auf.
- on_sensing_borders(borders): Gibt eine Liste mit Rändern zurück, die zur Zeit berührt werden (z.B. [“right”, “top”]
- on_sensing_on_board(): Wird aufgerufen, wenn der Akteur sich auf dem Spielfeld befindet.
- on_sensing_not_on_board(): Wird aufgerufen, wenn sich der Akteur nicht auf dem Spielfeld befindet.
Allgemeines Event-Handling mit der get_event-Methode¶
Die get_event(event, data)-Methode¶
Die get_event(event, data)-Methode) dient dazu, auf Ereignisse verschiedener Art zu reagieren.
- Der Parameter event enthält immer einen String mit dem Ereignis, z.B.:
- “mouse-left”: Es wurde die linke Maustaste gedrückt.
- …
- Der Parameter data enthält Infos, die zu dem Ereignis passen.
- “mouse-left”, “mouse-right” : Die Kachel im Board auf die geklickt wurde.
Beispiel:¶
def get_event(self, event, data):
if event == "key_down":
if "W" in data:
self.move(direction="up")
elif "S" in data:
self.move(direction="down")
elif "A" in data:
self.move(direction="left")
elif "D" in data:
self.move(direction="right")
Der Code überprüft, ob das Ereignis “key_down geworfen wurde. Im Parameter data wird hier eine Liste mit allen in diesem Moment gedrückten Buttons zurückgegeben. Es kann daher überprüft werden: *Wenn der Button X gedrückt wurde, tue …