Skip to content

Latest commit

 

History

History
374 lines (281 loc) · 14.6 KB

File metadata and controls

374 lines (281 loc) · 14.6 KB

🐢 Turtle Graphics: Zeichnen mit Python! 🎨

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!

1. Was ist Turtle Graphics eigentlich? 🤔

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.

2. Die ersten Schritte: Grundlegende Befehle ⚙️

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ün

Cool, oder? Jetzt hat Kurt sein eigenes Fenster! Schauen wir uns an, was Kurt so alles kann:

Bewegung 🚶‍♀️💨

  • kurt.forward(distanz): Bewegt Kurt um distanz Schritte vorwärts.
  • kurt.backward(distanz): Bewegt Kurt um distanz Schritte rückwärts.
  • kurt.right(winkel): Dreht Kurt um winkel Grad nach rechts.
  • kurt.left(winkel): Dreht Kurt um winkel Grad 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ßen

Versuch mal, ein Quadrat zu zeichnen! 😉

Stift-Status 🖋️✨

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

Farben und Aussehen 🌈🐢

  • kurt.fillcolor("farbe"): Setzt die Füllfarbe für Formen.
  • kurt.begin_fill(): Startet den Füllvorgang. Alle Linien, die du jetzt bis end_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. 0 ist am schnellsten, 1 ist langsam, 10 ist 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()

3. Listen und Turtle Graphics: Das Dream-Team! 🤝

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.

Koordinaten in Listen 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!

Farbpaletten als Listen 🎨🌈

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?

Befehlsfolgen in Listen (für Fortgeschrittene!) 📜🤖

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.

4. Einfache Zeichnungen mit Schleifen und Listen LOOP ➰🖼️

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.

5. Projekte und Übungen: Werde zum Turtle-Meister! 🏆✨

Jetzt bist du dran! Hier sind ein paar Ideen und Übungen, um deine Turtle-Fähigkeiten zu testen:

  1. Dein Name: Zeichne die Buchstaben deines Namens. Benutze penup() und pendown(), um zwischen den Buchstaben zu wechseln. Vielleicht bekommt jeder Buchstabe eine andere Farbe aus einer Liste?
  2. Olympische Ringe: Zeichne die fünf olympischen Ringe in den richtigen Farben und Anordnungen. 🔵🟡⚫🟢🔴
  3. Ein Haus: Zeichne ein einfaches Haus mit Tür und Fenstern. Benutze Füllfarben! 🏡
  4. 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()
  5. Zufallskunst: Benutze das random Modul 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()

6. Hilfe, meine Turtle macht nicht, was sie soll! (Fehlerbehandlung) 🤕🆘

Manchmal passieren Fehler. Das ist ganz normal beim Programmieren!

  • Tippfehler: Überprüfe genau, ob du alle Befehle richtig geschrieben hast (z.B. forward statt foward). 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() (oder turtle.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 mit kurt.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.

7. Turtle Graphics Cheatsheet 📜🐢 (Visuelle Referenz)

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! 🚀