Bei eventgesteuerten Programmen kann der Benutzer den Programmablauf durch Drücken von Tastaturtasten oder mit Mausklicks beeinflussen. Es verlangt eine neue Programmiertechnik: Man definiert Funktionen (Callbackfunktionen), die vom Programm nie aufgerufen werden, sondern vom System. Bei Tastatur-Events wird bei einem Tastendruck ein keyPressed-Event ausgelöst und dabei eine Callbackfunktion aufgerufen, in der definiert wird, was beim Tastendruck geschehen soll. Der Callback erhält beim Aufruf durch das System im Parameter key die Information, welche Taste gedrückt wurde. Beispiel 1: Beim Drücken einer beliebigen Taste wird eine Treppenstufe gezeichnet. Der numerische Code der gedrückten Taste wird in der Statusbar angezeigt.
|
Erklärungen zum Programmcode:
makeTurtle(keyPressed = onKeyPressed) : registriert die Callbackfunktion onKeyPressed (man teilt dem System mit, wie die Callbackfunktion heisst) | |
def onKeyPressed(key) : Callbackfunktion, legt fest was geschehen soll, wenn eine Taste gedrückt wird |
Beispiel 2: Die Turtle kann mit den Cursor-Tasten nach links, rechts, oben bzw. nach unten bewegt werden. Die Callbackfunktion onKeyPressed(key) liefert den numerischen Code der gedrückten Taste. Bei den Cursortasten sind es die Codes 37, 38, 39 und 40.
|
Erklärungen zum Programmcode:
Mit if key == 37: falls die Taste LEFT mit dem nummerischen Code 37 gedrückt wurde | |
setHeading(-90) : dreht die Turtle gegen links |
Beispiel 3: Die Richtung einer sich ständig bewegenden Turtle kann mit den Cursortasten LEFT, RIGHT, UP oder DOWN geändert werden. Damit die Turtle das Fenster nicht verlässt, verwendet man den Wrap-Modus. Ein typisches Beispiel einer Eventsteuerung. Falls keine Taste gedrückt wird, läft das Programm weiter und die Turtle bewegt sich hin und her. Unabhängig davon, in welchem Zustand sich das Programm befindet, wird mit Drücken der Cursor-Tasten Left, Right, Up bzw. Down ihre Richtung geändert. Um den Programmcode übersichtlicher zu halten, verwenden wir anstelle der nummerischen Codes der Cursortaste die Variablen LEFT, RIGHT, DOWN und UP.
|
Beispiel 4: Zwei Turtles mit Drücken der Tastaturtasten bewegen. Mit Drücken der Taste X bewegt sich die Turtle t1 30 Schritte vorwärts, mit Drücken der Taste Y bewegt siche die Turtle t2 30 Schritte vorwärts. Ein Spiel dazu können Sie sich selbst ausdenken....
|
Erklärungen zum Programmcode:
tf.getKeyCode(): gibt den numerischen Code der gedrückten Taste zurück |
Beispiel 5: Zwei Turtles abwechslungsweise mit Cursortaste steuern.
|
Erklärungen zum Programmcode:
t2 = Turtle(t1): erzeugt eine zweite Turtle im Playground der ersten Turtle | |
getKeyCodeWait(): wartet auf einen Tastendruck und gibt den nummerischen Code der gedrückten Taste zurück |
Aufgaben Serie 11 |
1. | Beim Drücken der Taste "r" (Code 82) soll ein roter, Taste "g" Code 71) ein grüner und Taste "b" ein blauer gefüllter Kreis gezeichnet werden.
|
||
2. | Beim Drücken einer beliebigen Taste sollen zufällig 1, 2, 3, 4, 5, oder 6 gefüllte Kreise gezeichnet werden.
|
||
3. | Programmiere ein Turtle-Wettrennen:
|
||
4. | Snake light: Die Strafpunkte können in der Statusbar angezeigt werden. Du kannst auch das Turtle-Bild durch das Bild snakehead.gif ersetzen: makeTurtle("sprites/snakehead.gif", keyPressed = onKeyPressed) Das Bild ist im tigerjython2.jar enthalten.
|