Hallo junge Künstler und Programmier-Talente! 👋 Stellt euch vor, ihr könntet mit Code coole Bilder und Muster zeichnen. Genau das machen wir heute mit Turtle Graphics! Es ist, als hättet ihr eine kleine Roboter-Schildkröte 🐢, die auf eure Befehle hört und dabei Spuren auf dem Bildschirm hinterlässt. Los geht's!
Turtle Graphics ist eine supercoole Art, das Programmieren zu lernen, indem man Grafiken erstellt. Die Idee stammt ursprünglich von einer Programmiersprache namens Logo, die in den 1960er Jahren entwickelt wurde, um Kindern das Programmieren beizubringen. Stellt euch eine kleine Schildkröte vor, die einen Stift hält. Ihr gebt ihr Befehle wie "gehe vorwärts", "drehe dich links" oder "hebe den Stift hoch", und sie zeichnet für euch! ✏️
In Python ist Turtle Graphics ein eingebautes Modul, das heißt, ihr müsst nichts extra installieren. Es ist perfekt, um geometrische Formen, bunte Muster oder sogar kleine Animationen zu erstellen.
Um mit unserer Turtle loszulegen, müssen wir sie erstmal "importieren" und ein Fenster erstellen, in dem sie zeichnen kann.
import turtle
# Ein Fenster für unsere Schildkröte erstellen
fenster = turtle.Screen()
fenster.bgcolor("lightblue") # Wir machen den Hintergrund hellblau 🏞️
# Unsere Schildkröte erschaffen!
kurt = turtle.Turtle() # Nennen wir sie Kurt 😊
kurt.shape("turtle") # Kurt sieht jetzt aus wie eine echte Schildkröte
kurt.color("green") # Kurt ist grünCool, oder? Jetzt hat Kurt sein eigenes Fenster! Schauen wir uns an, was Kurt so alles kann:
kurt.forward(distanz): Bewegt Kurt umdistanzSchritte vorwärts.kurt.backward(distanz): Bewegt Kurt umdistanzSchritte rückwärts.kurt.right(winkel): Dreht Kurt umwinkelGrad nach rechts.kurt.left(winkel): Dreht Kurt umwinkelGrad nach links.kurt.goto(x, y): Bewegt Kurt direkt zu den Koordinaten (x, y). Der Punkt (0,0) ist in der Mitte des Fensters.
import turtle
fenster = turtle.Screen()
kurt = turtle.Turtle()
kurt.shape("turtle")
kurt.forward(100) # Gehe 100 Schritte vorwärts
kurt.left(90) # Drehe dich um 90 Grad nach links
kurt.forward(50) # Gehe 50 Schritte vorwärts
fenster.mainloop() # Hält das Fenster offen, bis wir es schließenVersuch mal, ein Quadrat zu zeichnen! 😉
kurt.penup(): Hebt den Stift hoch. Kurt bewegt sich, ohne zu zeichnen.kurt.pendown(): Setzt den Stift ab. Kurt zeichnet wieder.kurt.pensize(breite): Ändert die Dicke des Stifts.kurt.pencolor("farbe"): Ändert die Farbe des Stifts. Du kannst Farbnamen wie "red", "blue", "yellow" oder Hex-Codes wie "#FF0000" verwenden.
import turtle
fenster = turtle.Screen()
kurt = turtle.Turtle()
kurt.pensize(5) # Dicker Stift
kurt.pencolor("purple") # Lila! 💜
kurt.forward(100)
kurt.penup() # Stift hoch!
kurt.goto(0, 100) # Gehe woanders hin
kurt.pendown() # Stift runter!
kurt.pencolor("orange") # Orange! 🧡
kurt.circle(50) # Zeichne einen Kreis mit Radius 50
fenster.mainloop()kurt.fillcolor("farbe"): Setzt die Füllfarbe für Formen.kurt.begin_fill(): Startet den Füllvorgang. Alle Linien, die du jetzt bisend_fill()zeichnest, umschließen eine Fläche, die gefüllt wird.kurt.end_fill(): Beendet den Füllvorgang und füllt die Form.kurt.hideturtle(): Versteckt die Schildkröte.kurt.showturtle(): Zeigt die Schildkröte wieder an.kurt.speed(geschwindigkeit): Setzt die Zeichengeschwindigkeit.0ist am schnellsten,1ist langsam,10ist schnell.
import turtle
fenster = turtle.Screen()
kurt = turtle.Turtle()
kurt.speed(1) # Langsam, damit wir zusehen können
kurt.fillcolor("yellow") # Füllfarbe Gelb 💛
kurt.begin_fill()
for _ in range(4): # Ein Quadrat zeichnen
kurt.forward(100)
kurt.left(90)
kurt.end_fill() # Und füllen!
kurt.hideturtle() # Tschüss, Kurt! 👋
fenster.mainloop()Jetzt wird's richtig spannend! Wir haben ja schon Listen kennengelernt, und die sind super nützlich mit Turtle Graphics. Stell dir vor, du willst eine komplexe Form zeichnen oder viele Farben verwenden. Listen helfen uns, diese Infos geordnet zu speichern.
Manchmal wollen wir, dass unsere Schildkröte bestimmte Punkte nacheinander ansteuert. Wir können diese Punkte (x, y Koordinaten) in einer Liste von Listen (oder Tupeln) speichern!
import turtle
fenster = turtle.Screen()
kurt = turtle.Turtle()
kurt.penup() # Wir wollen erstmal nur springen, nicht zeichnen
# Eine Liste von Koordinaten für ein Dreieck
punkte = [(0,0), (100,0), (50,86.6)] # (x,y) Paare
for punkt in punkte:
kurt.goto(punkt) # Gehe zum nächsten Punkt in der Liste
kurt.stamp() # Hinterlasse einen Schildkröten-Abdruck 🐢
# Zurück zum Start und dann zeichnen
kurt.goto(punkte[0]) # Gehe zum ersten Punkt
kurt.pendown()
for punkt in punkte:
kurt.goto(punkt)
kurt.goto(punkte[0]) # Schließe das Dreieck
fenster.mainloop()Cool, oder? Kurt springt erst zu den Punkten und stempelt sich, dann zeichnet er das Dreieck!
Du willst nicht immer nur eine Farbe? Kein Problem! Speichere deine Lieblingsfarben in einer Liste und wechsle sie beim Zeichnen.
import turtle
fenster = turtle.Screen()
fenster.bgcolor("lightgray")
kurt = turtle.Turtle()
kurt.speed(5)
kurt.pensize(3)
farben = ["red", "orange", "yellow", "green", "blue", "purple"] # Unsere Regenbogen-Palette! 🌈
for i in range(18): # Wir zeichnen viele Linien
kurt.pencolor(farben[i % len(farben)]) # Wähle eine Farbe aus der Liste
# Das % len(farben) sorgt dafür, dass wir wieder von vorne anfangen,
# wenn wir am Ende der Liste sind (Modulo-Operator!)
kurt.forward(100 + i * 5) # Die Linien werden immer länger
kurt.right(60) # Drehung für ein sechseckiges Muster
fenster.mainloop()Probier mal andere Farbpaletten aus! Was ist deine Lieblingskombination?
Man könnte sogar Befehle oder Bewegungsabläufe in Listen speichern. Zum Beispiel eine Liste von Aktionen, die Kurt ausführen soll:
import turtle
fenster = turtle.Screen()
kurt = turtle.Turtle()
# Jedes Element der Liste ist ein Tupel: (Befehlstyp, Wert)
befehle = [
("forward", 100),
("left", 90),
("color", "blue"), # Wir ändern die Stiftfarbe
("forward", 50),
("penup", None), # Manche Befehle brauchen keinen Wert
("goto", (50, 50)),
("pendown", None),
("circle", 30)
]
for befehl, wert in befehle:
if befehl == "forward":
kurt.forward(wert)
elif befehl == "left":
kurt.left(wert)
elif befehl == "right":
kurt.right(wert)
elif befehl == "color":
kurt.pencolor(wert)
elif befehl == "penup":
kurt.penup()
elif befehl == "pendown":
kurt.pendown()
elif befehl == "goto":
kurt.goto(wert) # wert ist hier ein (x,y) Tupel
elif befehl == "circle":
kurt.circle(wert)
# Man könnte hier noch viel mehr Befehle hinzufügen!
fenster.mainloop()Das ist schon ziemlich clever! So kannst du komplexe Zeichnungen planen und Kurt die Arbeit machen lassen.
Schleifen sind unsere besten Freunde, wenn es darum geht, sich wiederholende Muster zu zeichnen. Kombiniert mit Listen für Farben oder Positionen, wird's richtig magisch!
Beispiel: Ein bunter Stern 🌟
import turtle
fenster = turtle.Screen()
fenster.bgcolor("black") # Schwarzer Hintergrund für unseren Stern
kurt = turtle.Turtle()
kurt.speed(0) # Schnellster Kurt!
kurt.hideturtle() # Wir wollen nur den Stern sehen
farben_stern = ["red", "yellow", "blue", "orange", "green", "purple"]
for i in range(36): # 36 Zacken für einen vollen Stern
kurt.pencolor(farben_stern[i % len(farben_stern)]) # Farbe wechseln
kurt.forward(200)
kurt.left(170) # Ein guter Winkel für einen Stern
fenster.mainloop()Sieht der nicht toll aus? Experimentiere mit der Anzahl der Zacken (range(36)) und dem Winkel (kurt.left(170)), um andere Sterne zu bekommen!
Beispiel: Viele bunte Quadrate квадратики 🟥🟩🟦
import turtle
fenster = turtle.Screen()
kurt = turtle.Turtle()
kurt.speed(0)
kurt.hideturtle()
farben_quadrate = ["#FFC300", "#FF5733", "#C70039", "#900C3F", "#581845"] # Eine schicke Palette
start_positionen = [(-100, 100), (0, 100), (100, 100), (-50, 0), (50, 0)]
groessen = [40, 50, 30, 60, 45]
for i in range(len(start_positionen)):
kurt.penup()
kurt.goto(start_positionen[i]) # Gehe zur Startposition
kurt.pendown()
kurt.fillcolor(farben_quadrate[i % len(farben_quadrate)]) # Füllfarbe wählen
kurt.begin_fill()
for _ in range(4): # Ein Quadrat zeichnen
kurt.forward(groessen[i])
kurt.left(90)
kurt.end_fill()
fenster.mainloop()Hier haben wir gleich drei Listen benutzt: eine für die Farben, eine für die Startpunkte der Quadrate und eine für ihre Größen! So kannst du ganz einfach viele verschiedene Objekte zeichnen lassen.
Jetzt bist du dran! Hier sind ein paar Ideen und Übungen, um deine Turtle-Fähigkeiten zu testen:
- Dein Name: Zeichne die Buchstaben deines Namens. Benutze
penup()undpendown(), um zwischen den Buchstaben zu wechseln. Vielleicht bekommt jeder Buchstabe eine andere Farbe aus einer Liste? - Olympische Ringe: Zeichne die fünf olympischen Ringe in den richtigen Farben und Anordnungen. 🔵🟡⚫🟢🔴
- Ein Haus: Zeichne ein einfaches Haus mit Tür und Fenstern. Benutze Füllfarben! 🏡
- Spiral-Kunst: Experimentiere mit Schleifen, die bei jeder Wiederholung den Winkel oder die Distanz leicht verändern, um Spiralen zu zeichnen.
import turtle fenster = turtle.Screen() kurt = turtle.Turtle() kurt.speed(0) farben = ["red", "orange", "yellow", "green", "blue", "purple"] for i in range(200): kurt.color(farben[i%len(farben)]) kurt.forward(i) kurt.left(59) # Ändere diesen Winkel für andere Spiralen! fenster.mainloop()
- Zufallskunst: Benutze das
randomModul von Python, um zufällige Farben, Längen oder Winkel zu wählen und abstrakte Kunstwerke zu erschaffen!import turtle import random fenster = turtle.Screen() kurt = turtle.Turtle() kurt.speed(0) farben_zufall = ["Tomato", "Gold", "DarkSlateGray", "DeepSkyBlue", "Orchid"] for _ in range(50): # 50 zufällige Linien kurt.pencolor(random.choice(farben_zufall)) # Wähle eine zufällige Farbe kurt.pensize(random.randint(1, 5)) # Wähle eine zufällige Dicke laenge = random.randint(20, 100) winkel = random.randint(-180, 180) kurt.forward(laenge) kurt.right(winkel) fenster.mainloop()
Manchmal passieren Fehler. Das ist ganz normal beim Programmieren!
- Tippfehler: Überprüfe genau, ob du alle Befehle richtig geschrieben hast (z.B.
forwardstattfoward). Python ist da sehr pingelig! - Falsche Werte: Hast du vielleicht einen Winkel oder eine Distanz eingegeben, die nicht sinnvoll ist?
- Fenster schließt sich sofort: Hast du
fenster.mainloop()(oderturtle.done()) am Ende deines Codes? Ohne das schließt sich das Fenster oft, bevor du etwas siehst. - Kurt ist verschwunden: Hast du ihn vielleicht mit
kurt.hideturtle()versteckt und nicht wieder mitkurt.showturtle()sichtbar gemacht? Oder ist er aus dem Fenster gelaufen? - Farben funktionieren nicht: Hast du den Farbnamen richtig geschrieben (z.B. "blue" statt "blau")? Oder bei Hex-Codes das
#nicht vergessen?
Ein kleiner Tipp: Wenn du nicht weißt, wo Kurt ist, kannst du ihn jederzeit mit kurt.home() in die Mitte zurückschicken oder mit print(kurt.position()) seine aktuellen Koordinaten ausgeben lassen.
Hier eine kleine Übersicht der wichtigsten Befehle. Druck sie dir vielleicht aus oder speichere das Bild!
TURTLE GRAPHICS CHEATSHEET
Fenster & Turtle Setup:
import turtle
fenster = turtle.Screen()
meine_turtle = turtle.Turtle()
fenster.mainloop()
Bewegung:
meine_turtle.forward(distanz) # Vorwärts
meine_turtle.backward(distanz) # Rückwärts
meine_turtle.left(grad) # Links drehen
meine_turtle.right(grad) # Rechts drehen
meine_turtle.goto(x, y) # Zu Koordinate (x,y)
meine_turtle.home() # Zurück zum Start (0,0)
meine_turtle.circle(radius) # Kreis zeichnen
meine_turtle.dot(grösse, "farbe") # Punkt zeichnen
Stiftkontrolle:
meine_turtle.penup() # Stift heben (nicht zeichnen)
meine_turtle.pendown() # Stift senken (zeichnen)
meine_turtle.pensize(dicke) # Stiftdicke
meine_turtle.pencolor("farbe") # Stiftfarbe
Füllfarben:
meine_turtle.fillcolor("farbe") # Füllfarbe setzen
meine_turtle.begin_fill() # Füllvorgang starten
meine_turtle.end_fill() # Füllvorgang beenden & füllen
Turtle Aussehen & Geschwindigkeit:
meine_turtle.shape("turtle") # Aussehen (arrow, turtle, circle, square, triangle, classic)
meine_turtle.color("stiftfarbe", "füllfarbe") # Stift- UND Füllfarbe
meine_turtle.hideturtle() # Turtle verstecken
meine_turtle.showturtle() # Turtle zeigen
meine_turtle.speed(tempo) # Zeichengeschwindigkeit (0=schnellst, 1=langsam, 10=schnell)
Andere Nützliche Befehle:
fenster.bgcolor("farbe") # Hintergrundfarbe des Fensters
meine_turtle.stamp() # Turtle-Abdruck hinterlassen
meine_turtle.clear() # Zeichnungen der Turtle löschen
meine_turtle.reset() # Turtle zurücksetzen & Zeichnungen löschen
meine_turtle.position() # Aktuelle Position (x,y) bekommen
meine_turtle.heading() # Aktuelle Ausrichtung in Grad bekommen
Wow, das war eine ganze Menge! Aber keine Sorge, du musst nicht alles auf einmal können. Probiere die Beispiele aus, verändere sie und hab Spaß dabei, deine eigenen Kunstwerke mit Turtle Graphics zu erschaffen! 🎉 Viel Erfolg und fröhliches Programmieren! 🚀