Introduction to Turtle Graphics

Introduction to Turtle Graphics
paly

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 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))