Skip to content

Instantly share code, notes, and snippets.

@horstjens
Last active October 6, 2025 15:23
Show Gist options
  • Save horstjens/aab103c1c1bfa7d9399e8ed25562ad79 to your computer and use it in GitHub Desktop.
Save horstjens/aab103c1c1bfa7d9399e8ed25562ad79 to your computer and use it in GitHub Desktop.
tannenbaum
import turtle
bildschirm = turtle.Screen()
bildschirm.title('mein turtle Programm')
breite, höhe = 1200, 800
bildschirm.setup(breite, höhe)
bildschirm.setworldcoordinates(0,0,breite, höhe) # ursprung links unten
alex = turtle.Turtle()
alex.shape("turtle")
alex.speed(0) # sehr schnell, aber Bewegungen bleiben sichtbar
#bildschirm.tracer(0,0) # unsichtbar zeichnen
#bildschirm.update() # alles sichtbar machen
def dreieck(breite=100, höhe=30, farbe="#2E7A27"):
# Position und Richtung von Alex speichern
position = alex.pos()
richtung = alex.heading()
alex.color(farbe, farbe) # pencolor und fillcolor
alex.pendown()
alex.begin_fill()
alex.goto(position[0] - breite/2, position[1])
alex.goto(position[0], position[1] + höhe)
alex.goto(position[0] + breite/2, position[1])
alex.goto(position)
alex.end_fill()
alex.penup()
alex.setheading(richtung)
#alex.forward(200)
alex.penup()
alex.goto(breite/2, höhe/2)
dreieck()
bildschirm.exitonclick()
import turtle
bildschirm = turtle.Screen()
bildschirm.title('mein turtle Programm')
breite, höhe = 1200, 800
bildschirm.setup(breite, höhe)
bildschirm.setworldcoordinates(0,0,breite, höhe) # ursprung links unten
alex = turtle.Turtle()
alex.shape("turtle")
alex.speed(0) # sehr schnell, aber Bewegungen bleiben sichtbar
#bildschirm.tracer(0,0) # unsichtbar zeichnen
#bildschirm.update() # alles sichtbar machen
def dreieck(breite=100, höhe=30, farbe="#2E7A27"):
# Position von Alex speichern
position = alex.pos()
#richtung = alex.heading()
alex.color(farbe, farbe) # pencolor und fillcolor
alex.pendown()
alex.begin_fill()
alex.goto(position[0] - breite/2, position[1])
alex.goto(position[0], position[1] + höhe)
alex.goto(position[0] + breite/2, position[1])
alex.goto(position)
alex.end_fill()
alex.penup()
#alex.setheading(richtung)
def baum(stammhöhe=150, stammbreite=20, startbreite=300, starthöhe=150,
anzahl_dreiecke = 5, startfarbe=(0,0.3,0), endfarbe=(0,0.77,0),
xfaktor=0.65, yfaktor=0.7):
position = alex.pos() # Position von Alex speichern
alex.pencolor("brown") # stamm malen
alex.pensize(stammbreite)
alex.pendown()
alex.forward(stammhöhe)
alex.pensize(1) # grüne dreiecke malen
farbdelta = (
(endfarbe[0]-startfarbe[0]) / anzahl_dreiecke, # rotverschiebung
(endfarbe[1]-startfarbe[1]) / anzahl_dreiecke, # grünverschiebung
(endfarbe[2]-startfarbe[2]) / anzahl_dreiecke, # blauverschiebung
)
farbe = startfarbe
höhe = starthöhe
breite = startbreite
for _ in range(anzahl_dreiecke): # unterstrich als Schleifenvariable
dreieck(breite, höhe, farbe )
breite *= xfaktor # kurzform für: breite = breite * xfaktor
höhe *= yfaktor
alex.forward(höhe)
farbe = (farbe[0]+farbdelta[0],
farbe[1]+farbdelta[1],
farbe[2]+farbdelta[2],
)
alex.penup() # zurück zur startposition gehen
alex.goto(position)
alex.setheading(90) # schaut nach oben, selber effekt wie alex.left(90)
alex.penup()
alex.goto(breite/2, höhe/20) # mitte unten
baum()
bildschirm.exitonclick()
import turtle
import random
bildschirm = turtle.Screen()
bildschirm.title('mein turtle Programm')
breite, höhe = 1200, 800
bildschirm.setup(breite, höhe)
bildschirm.setworldcoordinates(0,0,breite, höhe) # ursprung links unten
alex = turtle.Turtle()
alex.shape("turtle")
#alex.speed(0) # sehr schnell, aber Bewegungen bleiben sichtbar
bildschirm.tracer(0,0) # unsichtbar zeichnen
#bildschirm.update() # alles sichtbar machen
def dreieck(breite=100, höhe=30, farbe="#2E7A27"):
# Position von Alex speichern
position = alex.pos()
#richtung = alex.heading()
alex.color(farbe, farbe) # pencolor und fillcolor
alex.pendown()
alex.begin_fill()
alex.goto(position[0] - breite/2, position[1])
alex.goto(position[0], position[1] + höhe)
alex.goto(position[0] + breite/2, position[1])
alex.goto(position)
alex.end_fill()
alex.penup()
#alex.setheading(richtung)
def baum(stammhöhe=150, stammbreite=20, startbreite=300, starthöhe=150,
anzahl_dreiecke = 5, startfarbe=(0,0.3,0), endfarbe=(0,0.77,0),
xfaktor=0.65, yfaktor=0.7):
position = alex.pos() # Position von Alex speichern
alex.pencolor("brown") # stamm malen
alex.pensize(stammbreite)
alex.pendown()
alex.forward(stammhöhe)
alex.pensize(1) # grüne dreiecke malen
farbdelta = (
(endfarbe[0]-startfarbe[0]) / anzahl_dreiecke, # rotverschiebung
(endfarbe[1]-startfarbe[1]) / anzahl_dreiecke, # grünverschiebung
(endfarbe[2]-startfarbe[2]) / anzahl_dreiecke, # blauverschiebung
)
farbe = startfarbe
höhe = starthöhe
breite = startbreite
for _ in range(anzahl_dreiecke): # unterstrich als Schleifenvariable
dreieck(breite, höhe, farbe )
breite *= xfaktor # kurzform für: breite = breite * xfaktor
höhe *= yfaktor
alex.forward(höhe)
farbe = (farbe[0]+farbdelta[0],
farbe[1]+farbdelta[1],
farbe[2]+farbdelta[2],
)
alex.penup() # zurück zur startposition gehen
alex.goto(position)
alex.setheading(90) # schaut nach oben, selber effekt wie alex.left(90)
alex.penup()
# male einen Wald
# range(start, stop, step)
for y in range(höhe//10*8,-50 , -höhe//10):
for x in range(0, breite, breite//20):
alex.goto(x + random.randint(-100,100),y + random.randint(-50,50)) # mitte unten
baum(stammhöhe = random.randint(20,100),
startbreite= random.randint(100,300),
starthöhe = random.randint(50,100),
anzahl_dreiecke=random.randint(3,8),
)
bildschirm.update()
bildschirm.exitonclick()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment