EINLEITUNG |
|
EINSTIEG |
Wir geben dir hier erst einmal nur die Grundstruktur für das Spiel an. Die Turtle bewegt sich auf einer Art von "Schachbrett". Mit Klicken kannst du ein Feld schwarz färben. Bei einem grösseren Programm ist es wichtig, dass du mit Kommentaren erklärst, was die einzelnen Teile machen. Kommentare beginnen jeweils mit #. Python ignoriert alle solchen Kommentare, sie dienen nur dem Leser zum besseren Verständnis. Nachdem wir zuerst alle Befehl definiert haben, beginnt das Hauptprogramm erst danach. Das machen wir deutlich mit einem Kommentar ### ------------- MAIN --------------- ### (eine Kurzform für main program, also Hauptprogramm). Auch das hat für Python keine Bedeutung, hilft uns aber, die Übersicht zu behalten. # labyrinth.py from gturtle import * CELLSIZE = 40 #Wähle zwischen: 10, 20, 40, 50 # Zeichnet das Grundgitter: def drawGrid(): global CELLSIZE hideTurtle() setPenColor("gray") x = -400 repeat (800 // CELLSIZE) + 1: setPos(x, -300) moveTo(x, +300) x += CELLSIZE y = -300 repeat (600 // CELLSIZE) + 1: setPos(-400, y) moveTo(+400, y) y += CELLSIZE setPos(0, 0) showTurtle() @onMouseHit def onClick(x, y): turtle_x = getX() turtle_y = getY() # Zelle schwarz färben hideTurtle() setPos(x, y) if getPixelColorStr() == "white": setFillColor("black") fill(x, y) # Die Turtle wieder dahin zurücksetzen, # wo sie am Anfang war. setPos(turtle_x, turtle_y) showTurtle() def doStep(): hideTurtle() # Einen Schritt nach vorne machen. forward(CELLSIZE) # Falls die Turtle auf einem schwarzen Feld landet, # setzen wir sie wieder zurück und drehen sie dafür. if getPixelColorStr() == "black": back(CELLSIZE) right(90) showTurtle() ### ----------------------- MAIN --------------------------- ### makeTurtle() drawGrid() # Die Turtle auf ein Anfangsfeld setzen: setPos(-400 + 5 * CELLSIZE // 2, -300 + 5 * CELLSIZE // 2) penUp() repeat 1000: doStep() delay(500) Bevor wir die Turtle an eine bestimmte Stelle bewegen, machen wir sie mit hideTurtle() unsichtbar und zeigen sie danach wieder mit showTurtle(). Das hat zwei Gründe: Zum einen wäre es z. B. merkwürdig, wenn die Turtle bei einem Mausklick kurz zum Mauscursor springt und danach wieder zurückgeht. Zum anderen wäre das Programm zu langsam, wenn die Turtle bei all ihren Bewegungen sichtbar wäre. |
AUFGABENSTELLUNG |
|