Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SFZ FN Sj. 13/14 Python 2 Turtle Inf K1/2 Sj 13/14 GZG FN W.Seyboldt.

Ähnliche Präsentationen


Präsentation zum Thema: "SFZ FN Sj. 13/14 Python 2 Turtle Inf K1/2 Sj 13/14 GZG FN W.Seyboldt."—  Präsentation transkript:

1 SFZ FN Sj. 13/14 Python 2 Turtle 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 GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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 GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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 (Offizielle Doku) GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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 GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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): GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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 GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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 GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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. Quelle GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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 GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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. GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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. GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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 … Quelle: wiki GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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): GZG FN W.Seyboldt Inf K1/2 Sj 13/14

15 Weitere Aufgaben Zeichne einige der Figuren, halte mindestens eine Größe variabel Siehe GZG FN W.Seyboldt Inf K1/2 Sj 13/14

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)) GZG FN W.Seyboldt Inf K1/2 Sj 13/14


Herunterladen ppt "SFZ FN Sj. 13/14 Python 2 Turtle Inf K1/2 Sj 13/14 GZG FN W.Seyboldt."

Ähnliche Präsentationen


Google-Anzeigen