# rekursiv gezeichnete Strukturen # ruft man das Programm so auf, werden alle Strukturen # übereinander gezeichnet, also nur die Codeschnipsel kopieren from turtle import * # Farn def farn (s): if (s > 10): pensize(s/10) fd(s) left(25) farn(s * 0.6) right(35) farn(s * 0.7) right(25) farn(s * 0.5) left( 35) back(s) else: fd(s) back(s) setup(width=400,height=550) tracer(0) clear() left(90) fd(-260) farn(160) #=================================================== # Weihnachtsbaum def lbaum(gross): if gross>10: lbaum(gross*2/3) seth(210) fd(gross+gross/3) seth(0) fd(gross) def rbaum(gross): if gross>10: rbaum(gross*2/3) seth(330) fd(gross+gross/3) seth(180) fd(gross) def wbaum(x,y,gross): park=pos() shapesize(1,1,1) color("darkgreen") up() goto(x,y) down() begin_fill() lbaum(gross) fd(gross/5) rt(90) fd(gross/5) stamm=pos() up() goto(x,y) down() rbaum(gross) fd(gross/5) lt(90) fd(gross/5) goto(stamm) up() end_fill() goto(park) shapesize(2,2,2) seth(60) setup(height=350,width=350) tracer(0) wbaum(0,100,100) #============================================= # Grüner Baum def baum(s,t): if t>1: fillcolor("brown") for i in range(1,3): begin_fill() forward(s); left(90) forward(3*t); left(90) end_fill() forward(s) left(30) baum(s*0.6, t-1) right(55) baum(s*0.65, t-1) left(25) backward(s) elif t>=0: fillcolor("darkgreen") begin_fill() forward(4*s); circle(2*s); backward(4*s) end_fill() color("red") begin_fill forward(3*s); circle(5); backward(3*s) end_fill() forward(s) left(50) color("brown") baum(s*0.6, t-1) right(85) baum(s*0.65, t-1) left(35) backward(s) setup (width=400, height=400, startx=0, starty=0) # Fenstergröße title("Grüner Baum") # Fenstertitel tracer(0) left(90) width(1) up() backward(150) down() baum(100,6) #=================================================== # Schneeflocke def schneeflocke(laenge): for h in range (6): fd(laenge) # linie(l) if laenge>2: schneeflocke(laenge//3) back(laenge) rt(60) setup(height=350,width=350) tracer(0) schneeflocke (100) #=================================================== # Kochkurve def koch( s ): if s < 10: fd(s) return() s = s / 3.0 koch(s) left(60) koch(s) right(120) koch(s) left(60) koch(s) setup(width=400,height=400) tracer(0) up() goto(-150,90) down() koch(300.0) right(120) koch(300.0) right(120) koch(300.0) #========================================== # Pythagoras-Baum from math import * def quadrat(s): for i in range (4): fd(s) right(90) def pythagorasBaum(s): quadrat(s) if(s>5): forward(s) left(30) pythagorasBaum(s*0.5*sqrt(3)) right(90) forward(s*0.5*sqrt(3)) pythagorasBaum(s/2) forward(-s*0.5*sqrt(3)) left(60) forward(-s) setup(height=450,width=550) tracer(0) up() goto(50,-150) seth(90) down() pythagorasBaum(80) #========================================= # Quadratbaum from math import * def quadratbaum(wert): if (wert>100/2**(4-1)): left(90) fd(wert/2) rt(90) fd(wert) lt(45) quadratbaum(wert/2) rt(135) fd(wert) lt(45) quadratbaum(wert/2) rt(135) fd(wert) rt(90) fd(wert/2) rt(90) setup(height=450,width=550) tracer(0) up() goto(50,-150) seth(90) down() quadratbaum(50) mainloop()