Ereignisse unterbrechen den normalen Programmablauf. Typisch reagiert ein Programm auf Benutzereingaben, z.B. Mausklicks oder eine Tastatureingabe. Wir können so z.B. eine Turtle erstellen, welche sich mit den Tasten der Tastatur steuern lässt.

Ereignisse muss man aber registrieren: Das Programm-Fenster muss wissen, welches Unterprogramm aufgerufen wird, wenn z.B. die Taste L gedrückt wird. Mit dem onkey-Unterprogramm des Turtle-Screens, können wir unser aufzurufendes Unterprogramm registrieren.

# Beispiel

Im Beispiel bewegt sich die Turtle mit einer konstanten Geschwindigkeit ständig vorwärts

import turtle

spieler = turtle.Turtle()
spieler.geschwindigkeit = 1

def links():
    spieler.left(15)

def rechts():
    spieler.right(15)

screen = turtle.Screen()
screen.onkey(links, "Left")
screen.onkey(rechts, "Right")
screen.listen()

while True:
    spieler.forward(spieler.geschwindigkeit)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# Aufgaben

Ereignisse

  1. Erstelle ein neues Python-Skript ereignisse.py und kopiere den Beispiel-Code dort rein. Starte das Programm.
  2. Die Cursortaste nach oben, soll die Turtle beschleunigen, nach unten soll sie verlangsamt werden.
  3. Löse eine der Zusatzaufgaben (Entweder Aufgabe 2 oder Aufgabe 3)

Verfolungsjagd

Erweitere deine Lösung der Aufgabe 1 zu einem kleinen Spiel:

  • Die Spieler-Turtle fährt und kann gesteuert werden
  • Es erscheinen zwei Gegner-Turtles (z.B. am Rand oder später zufällig irgendwo auf den Schirm)
  • die Gegner fahren mit einer fixen Geschwindigkeit in die Richtung des Spielers (Turtle-Befehle towards und setheading)
  • Wenn der Spieler einem Gegner zu Nahe kommt hat er verloren (distance)
  • Wenn der Spieler es schafft, dass beide Gegner sich zu Nahe kommen, hat er gewonnen (distance)
  • Nach Sieg/Niederlage werden alle Turtles an eine neue Startposition gestellt und das Spiel neu gestartet
  • Punkte zählen und anzeigen

Zeichnungsprogramm

Erweitere deine Lösung der Aufgabe 1 zu einem Zeichnungsprogramm.

Folgendes wäre denkbar:

  • die Turtle ist steuerbar mit der Tastatur (ev. ohne Geschwindigkeit und while-Schleife, sondern mit Cursortaste nach oben für vorwärts)
  • einige Tasten setzen verschiedene Farben (pencolor, fillcolor)
  • eine Taste macht ein begin_fill, eine andere ein end_fill
  • mit den Zahlen-Tasten lässt sich die Stiftdicke einstellen, z.B. turtle.pensize(5)
  • Spezialtasten zeichnen ganze Kreise oder in Unterprogrammen gespeicherte Figuren, z.B. ein Stern
  • penup, pendown
Letzte Änderung: 20.1.2020, 10:39:18