Deutsch English |
DU LERNST HIER... |
dass die ereignisgesteuerte Programmierung ein neues Programmierkonzept ist. Statt dass du mit deinem Programm der Turtle Befehle erteilst, kannst du die Turtle mit Mausklicks steuern. |
MUSTERBEISPIELE |
Mit Mausevents werden mausgesteuerte Aktionen ausgelöst. Die Mausklicks werden vom System erfasst und führen zum Aufruf einer sogenannten Callbackfunktion. Diese gibt die Koordinaten des Mausklicks zurück und legt fest, was bei einem Mausklick geschehen soll. Die Callbackfunktion wird als benannter Parameter von makeTurtle() registriert.
Programm:
|
Programm: from gturtle import * def drawStar(): repeat 9: forward(40) right(160) def onMousePressed(x, y): setPos(x, y) drawStar() makeTurtle(mousePressed = onMousePressed) hideTurtle() setPenColor("magenta") |
Programm: from gturtle import * def drawPoint(x, y): global n moveTo(x, y) dot(5) n += 1 if n == nbCorners: fillPath() makeTurtle(mousePressed = drawPoint) hideTurtle() n = 0 nbCorners = InputInt("GibAnzahl Ecken an") setFillColor("red") startPath() |
MERKE DIR... |
Die neue Programmiertechnik ist daran zu erkennen, dass die Funktion onMousePressed(x, y) nirgends von deinem Programm aufgerufen wird. Sie wird beim Auftreten eines Ereignisses vom System aufgerufen. Eine solche Funktion nennen wir Callbackfunktion oder kurz Callback. Die Variable n im letzten Beispiel nennt man eine globale Variable, da sie sowohl im Hauptprogramm als in der Callbackfunktion drawPoint(x,y) verwendet wird. Eine Variable die nur in einer Funktion verwendet wird, nennt man eine lokale Variable. |
ZUM SELBST LÖSEN |
|
ZUSATZSTOFF |
DEIN ERSTES GAME |
from gturtle import * def square(): for i in range(4): forward(60) right(90) def drawBoard(): for x in range(3): for y in range(3): setPos(60 * x, 60 * y) square() def drawDot(x, y): global player if player == 1: setPenColor("red") player = 2 elif player == 2: setPenColor("lime") player = 1 setPos(x, y) dot(45) player = 1 makeTurtle(mousePressed = drawDot) hideTurtle() drawBoard() Es wäre interessant, das Spiel so zu erweitern, dass es von selbst merkt, wenn der ein Spieler gewonnen hat bzw. wenn das Spiel unentschieden ist. |
ZUM SELBST LÖSEN |
4*. |
|