Introduction to Turtle Graphics
Turtle is a programmable robot that can move around on the floor and draw pictures with its pen. It is a popular way to introduce kids to programming. Developed in 1966, it was part of the original Logo programming language.
- Uploaded on | 2 Views
- niklas
About Introduction to Turtle Graphics
PowerPoint presentation about 'Introduction to Turtle Graphics'. This presentation describes the topic on Turtle is a programmable robot that can move around on the floor and draw pictures with its pen. It is a popular way to introduce kids to programming. Developed in 1966, it was part of the original Logo programming language.. The key topics included in this slideshow are . Download this presentation absolutely free.
Presentation Transcript
1. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python 2 Turtle
2. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 2 Turtle Die „Turtle“ ist eine programmierbare „Schildkröte“, die auf dem Boden hin- und herlaufen kann und, falls der Zeichenstift abgesenkt ist, ihren zurückgelegten Weg aufzeichnet. Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966
3. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 3 Beginn der Turtle Seymour Papert KI-Bereich des MIT in den 1970er Projekte für Kinder mit den Zielen: – Selbständiges Erschließen – geometrischer Zusammenhänge – Computer als Werkzeug zur Erzeugung geometrischer Figuren – Veranschaulichung der Mathematik, insbesondere der Geometrie Ergebnis: Programmiersprache LOGO mit Turtle-Geometrie und präobjektorientierter Sichtweise
4. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 4 Turtle-Befehle import turtle as t # import der nötigen Module hugo = t.Turtle(shape= "turtle" ) # eine Schildkröte erstellen (Klasse) hugo.fillcolor( "red" ) # Farbe der Schildkröte ändern hugo.forward(x) # x Pixel vorwärts hugo.left(grad) # Biege grad° nach links ab hugo.right(y) hugo.goto(x,y) # gehe zur Position (x,y) – Im Zentrum ist (0/0), Pixel hugo.circle(r) # zeichne einen Kreis mit Radius r (Pixel) hugo.circle(r,y) # zeichne einen Kreisbogen mit Radius r und Winkel y hugo.up() # hebe den Stift hugo.down() # senke den Stift – wenn sich Hugo bewegt wird gezeichnet hugo.pencolor(f) # Stelle die Farbe f ein, z.B. “ red“ Hugo.speed(x) # 0: am schnellsten, 10 schnell, 6 normal, 1 langsam Siehe http://docs.python.org/2/library/turtle.html (Offizielle Doku)
5. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 5 Beispiel 1: Turtle01 import turtle as t fenster = t.Screen() fenster.bgcolor( 'green' ) hugo = t.Turtle(shape= "turtle" ) hugo.fillcolor( "yellow" ) hugo.up() hugo.goto(-100,-150) hugo.pencolor( 'red' ) hugo.pensize(6) hugo.down() hugo.circle(200) for i in range(4): hugo.forward(300) hugo.left(90) t.done() # Warten bis der Benutzer das Fenster schließt
6. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 6 Wdh Grundlagen Python Variable sind Speicherplätze oder Notizzettel: int() // float() // str() Das Gleichheitszeichen ist ein Zuweisungsoperator Anzeige: print var1 print " Es ist %0.2f, durch %i = %1.4f" %(cf,d,q) Einfabe: eingabestr = raw_input( " Info : " ) Bedingung – bedingte Ausführung eines Codes if x<y: print ("Bedingung x<y erfüllt") elif x==y: # == ist das mathematische Gleichheitszeichen print ("Bedingung x=0y erfüllt") else: print ("Bedingungen x<y und y==x falsch") Schleife – wiederholte Ausführung eine Codes, leicht geändert. for i in liste: a=a+i continue macht bei der nächsten Schleife weiter, break beendet sie Listen [1,2,5,8,9] // range(a,b,d):
7. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 7 Aufgaben: Turtle02, Turtle02b Turtle02: Zeichne mit der Turtle ein regelmäßiges Zehneck. Arbeite mit einer Schleife. Turtle02b: Zeichne mit der Turtle ein regelmäßiges n-Eck, wobei die Eckenanzahl eingegeben werden soll. Erstelle eine Methode. Wie bestimmt man die Winkel? Test die Methode mit dreieck, 6-Ecke, 11-Eck
8. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 8 Aufgaben: Turtle02c / Turtle3 Turtle02c: Zeichne mit der Turtle ein regelmäßiges Sechseck, das von einem Kreis umgeben ist und in dessen Innerem ein Dreieck liegt (siehe links unten) Turtle03:Zeichne den 20-zackigen Stern unten
9. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 9 Aufgaben: Turtle04, Turtle05 Turtle04: Zeichne mit der Turtle das Haus vom Nikolaus. Vorsicht: Überlege davor, wie lang die Strecken sind. Turtle05: Schreibe eine Methode hausDesNikolaus(breite), die ein Haus vom Nikolaus der Breite breite zeichnet. Zeichne damit verschiedene immer kleiner werdende Häuser an einer Straße.
10. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 10 Aufgabe: Turtle06 Turtle06: Zeichne mit der Turtle den abgebildeten Kuchen. Tipps: circle(r,alpha) begin_fill () … end_fill() zeichne mit der Stiftfarbe des Hintergrund
11. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 11 Aufgabe 4: Turtle07-Turtle09 Schreibe eine Methode dreieck(l), die ein gleichseitiges Dreieck der Seitenlänge l zeichnet (Turtle07). Zeichne damit 10 ineinander geschachtelte Dreiecke (Turtle08). Zeichne einen Weihnachtsbaum bestehend aus Dreiecken wie nebenan - zuerst ohne Kerzen, Stamm und Stern, die Anzahl der Dreieck (a=b=2c) unten sei aber variabel. Im Bild ist etwa n=4. Turtle09, schreibe eine Methode.
12. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 12 Aufgabe: Olympische Ringe Turtle10_Ringe.py Benutze die Methode hugo.circle(r) , um die 5 Kreise zu zeichnen. Zur Position und Farbe der Ringe: – Zeichne sie in einer Schleife – Die Mittelpunktskoordinaten der Kreise sind (xx,yy), die Farbe color – Die Kreiszentren werden wie folgt berechnet: xx=int(x0+r*1.1*x) und yy = int(y0+y*r* 1.1) mit x0,y0 = beliebiger Anfangswert – Die Werte x,y, stehen in einer Liste x,y,color = posR[i] – Die Liste wird vor der Schleife erstellt posR = [(0,0, "blue" ), (-2,0, "purple" ),(1,1, "red" ), (-1,1, "yellow" ), (-3,1, "green" )] – Der Radius ist r=50 Turtle10b_Ringe.py: Schreibe eine Methode, die die Kreise zeichnet Dabei werden r, x0,y0 übergeben.
13. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 13 Klasse (class) – Objekte Unter ObjektOrientierung , kurz OO, versteht man eine Sichtweise auf komplexe Systeme, bei der ein System durch das Zusammenspiel kooperierender Objekte beschrieben wird. Wichtig ist an einem Objekt, dass ihm bestimmte Attribute ( Eigenschaften ) und Methoden (Handlungen) zugeordnet sind und dass es in der Lage ist, von anderen Objekten „Informationen“ zu empfangen, beziehungsweise an diese zu senden. Ergänzt wird dies durch das Konzept der Klasse , in der Objekte aufgrund ähnlicher Eigenschaften zusammengefasst werden. Ein Objekt wird im Programmcode als Instanz beziehungsweise Inkarnation einer Klasse erstellt. Die Grundidee der ObjektOrientierten Programmierung , kurz OOP, ist, die Software an den Grundstrukturen desjenigen Bereichs der Wirklichkeit auszurichten, der die gegebene Anwendung betrifft. Die Umsetzung dieser Denkweise erfordert die Einführung verschiedener Konzepte, insbesondere Klassen, Vererbung, Polymorphie und spätes Binden. Aber auch Datenkapselung, Information Hiding, Überschreiben …
14. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 14 Klasse MyTurtle / MyTurtle10.py Eine Klasse kann man sich vorstellen wie einen Bauplan oder die Beschreibung einer Firma Ein Objekt ist eine bestimmte Realisierung davon. class MyTurtle (t.Turtle): """ Erbt alles von der Klasse Turtle """ def __init__ ( self ): """ Konstruktor, wird bei der Erzeugung eines Objekts automatisch gestartet.Enthält alles was zur Initialisierung gehört """ def drawCircle ( self , x, y, color, radius=50): # Normale Methode, beginnt immer mit self, erscheint im Aufruf aber nicht Erzeuge ein Objekt vom Typ MyTurtle: hugo = MyTurtle() Der Rest ist wie gehabt (self erscheint nicht, entspricht hugo) hugo. drawCircle (x, y, color, radius=50):
15. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 15 Weitere Aufgaben Zeichne einige der Figuren, halte mindestens eine Größe variabel
16. Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 16 Mehrere Turtles Sollen mehr als eine Turtles auf der Zeichenfläche zeichnen, so kann man die weiteren als Objekte der Klasse Pen erstellen. Standard-Turtle: blau 2. Turtle t2: rot Programm import turtle as t import random as r t.reset() t2 = t.Pen() t.color( 'blue' ) t2.color( 'red' ) for i in range(20): t.goto(r.randint(-200,200),r.randint(-200,200)) t2.goto(r.randint(-200,200),r.randint(-200,200))