Schildkröten
Eine Schildkröte ist ein System, welches sich auf einer Zeichenfläche bewegen und dabei eine Spur hinterlassen kann.
Das Modul ‹turtle› enthält aufrufbare Objekte zum Steuern einer Schildkröte. Wir werden aber in dieser Lektion erst einmal nur die Zeichenfläche öffnen und wieder schließen.
Ein Programm sollte nicht als »turtle.py« gespeichert werden, da »from turtle import *« dann nicht mehr aus dem richtigen Modul importiert, sondern aus dem gespeicherten Programm »turtle.py«!
Allgemein sollte ein Programm nicht unter dem Namen eines Moduls, das man vielleicht einmal importieren möchte (wie »math« oder »random«), gespeichert werden.
Im Zweifelsfall kann immer der Name »main.py« verwendet werden.
- Videos
xMzojQFyMo0 Seymour Papert 1972
KeFhFPN08hc Logo's yellow turtle
IDLE und Schildkröten
Die Verwendung der Schildkrötengraphik von der Konsole aus ist unter manchen Windows -Versionen schwierig, da das Graphikfenster dort manchmal nicht reagiert und manchmal ein Neustart der Konsole nötig wird (falls man nicht »done()« auswerten läßt, was aber verhindert, daß die Schildkröten danach noch weiterbewegt werden).
Oft kann das Schildkrötensystem mit IDLE besser verwendet werden als mit der Konsole.
Alle Schildkröten-Skripte in diesem Kurs sind für die Verwendung mit IDLE gedacht.
Anzeigen der Erklärung des Moduls
Mit ›help‹ kann eine ausführliche Erklärung des Moduls angezeigt werden.
- Konsolenprotokoll (verkürzt)
import turtle
help( turtle )
Help on module turtle: …
›home‹ – Zurücksetzen
Nach der Auswertung eines Aufrufs der Wirkfunktion ›home‹ befindet sich die Schildkröte in ihrer Ausgangsposition und zeigt nach rechts.
- Aufruf
from turtle import *
home()
Falls das Schildkrötenfenster bisher noch nicht geöffnet war, wird es geöffnet, sobald eine der hier vorgestellten Schildkröten-Funktionen aufgerufen wird.
Die obenstehende Eingabe sollte daher das Schildkrötenfenster öffnen. Eventuell wird dieses nicht von alleine sichtbar, weil es sich hinter anderen Fenstern verbirgt. Dann muß das Schildkrötenfenster erst gesucht und nach vorne gebracht werden.
Das Konsolenfenster sollte nun so verschoben werden, daß sich das Konsolenfenster und das Schildkrötenfenster nicht überlappen. Andere Fenster sollten nicht sichtbar sein. (Dies ist bei Verwendung von IDLE weniger wichtig.) (Das Schildkrötenfenster kann zwar ebenfalls verschoben werden, aber es wird machmal automatisch wieder an der ursprünglichen Position angezeigt.)
›hideturtle‹ – Verstecken
Nach der Auswertung von »hideturtle()« wird die Schildkröte versteckt.
- Aufruf
from turtle import *
hideturtle()
›showturtle‹ – Anzeigen
Nach der Auswertung von »showturtle()« wird die Schildkröte angezeigt.
- Aufruf
from turtle import *
showturtle()
Anzeigen der Erklärung von ›hideturtle‹
Mit ›help‹ können auch Erklärungen der Namen des Moduls angezeigt werden.
- Konsolenprotokoll (verkürzt)
from turtle import *
help( hideturtle )
Help on function hideturtle in module turtle: …
›speed‹ – Geschwindigkeit
Nach der Auswertung von »speed( True )« bewegt sich die Schildkröte langsamer, daß man ihre Bewegung besser beobachten kann.
- Aufruf
from turtle import *
speed( True )
Durch Auswertung von »speed( False )« kann die Geschwindigkeit auf ihr Maximum gesetzt werden.
»penup()« – Spurkontrolle
»penup()« Bewegen ohne Hinterlassen einer Spur einschalten
»pendown()« Bewegen mit Hinterlassen einer Spur einschalten
»pensize( 5 )« – Größenkontrolle
»pensize( 5 )« Linienbreite auf 5 stellen (für danach gezeichnete Linien)
»pensize()« – Größenabfrage ⃗
»pensize()« ein Wertausdruck, der die derzeit eingestellte Stiftgröße als Zahl ergibt
»stamp()« – Stempeln ⃗
»stamp()« erzeugt ein dauerhaftes Abbild („Stempelung“) der Schildkröte an ihrer derzeitigen Position
›shape‹ – Form ⃗
Nach der Auswertung von »shape( 'turtle' )« wird die Schildkröte als solche angezeigt, während sie sonst nur durch ein Dreieck dargestellt wird.
- Aufruf
shape( 'turtle' )
Durch eine Auswertung von »shape( 'classic' )« kann die ursprüngliche dreieckige Form wiederhergestellt werden.
Die folgende Auflistung enthält die Namen für verschiedene graphische Gestaltungen der Schildkröte.
- Formen
- »arrow« – Pfeil
»circle« – Kreis
»classic« – kleines Dreieck
»square« – Quadrat
»triangle« – Dreieck
»turtle« – Schildkröte
›turtlesize‹ – Form ⃗
Diese Funktion erwartet drei Argumente, welche die Vergrößerung der Schildkröte in waagerechter und senkrechter Richtung sowie ihrer Umrahmung angeben. Mit »turtlesize( 0.1, 0.1, 0.1 )« erhält man beispielsweise eine verkleinerte Schildkröte.
›done‹ – Aufgeben des Fensters ⃗
Nach der Auswertung von »done()« verliert das Programm die Kontrolle über das Schildkrötenfenster. Dadurch erlangt der Bediener die Kontrolle über das Schildkrötenfenster und kann es dann beispielsweise verkleinern oder schließen. Erst nach dem Schließen des Fensters durch den Bediener können dann wieder weitere Python -Kommandos eingegeben werden.
- Protokoll
done()
Unter manchen Python -Implementationen ist es wichtig, nach Erstellung einer Zeichnung »(done)« aufzurufen, damit der Benutzer das Schildkrötenfenster normal bedienen kann, unter anderen Python -Implementationen kann das Schildkrötenfenster ohnehin immer normal bedient werden, und der Aufruf von ›done‹ ist nicht wichtig.
Manchmal ist ›done‹ auch hilfreich, weil sein Aufruf das Fenster noch offen hält und ein sofortiges Schließen des Fensters nach Beendigung einer Zeichnung verhindert.
›reset‹ – Zurücksetzen ⃗
Nach der Auswertung eines Aufrufs der Wirkfunktion ›reset‹ ist eine eventuelle Zeichnung der Schildkröte gelöscht und die Schildkröte befindet sich wieder in ihrer Ausgangsposition.
- Aufruf
reset()
Bei Schwierigkeiten mit der Verwendung des Schildkrötensystems könnte es vielleicht hilfreich sein, wenn am Anfang eines Skriptes (nach den import-Anweisungen) zunächst zweimal »reset« und ganz am Ende des Skripts einmal »done« aufgerufen wird.
›bye‹ – Verabschieden ⃗
Nach der Auswertung eines Aufrufs der Wirkfunktion »bye« ist das Fenster mit der Zeichenfläche geschlossen.
- Aufruf
bye()
Durch zweifache Auswertung von »reset()« kann das Fenster wieder geöffnet werden. (Manchmal reicht auch eine einfache Auswertung aus.)