60 lines
1.3 KiB
Python
60 lines
1.3 KiB
Python
![]() |
#!/usr/bin/env python3
|
||
|
from turtle import Pen
|
||
|
|
||
|
|
||
|
def draw_tree(pen, scale=50):
|
||
|
pen.color("brown")
|
||
|
for angle in range(int(pen.heading() - 80), int(pen.heading() + 60), 51):
|
||
|
pen.setheading(angle)
|
||
|
back = pen.pos()
|
||
|
pen.pd()
|
||
|
for _ in range(5):
|
||
|
pen.forward(scale)
|
||
|
pen.left(10)
|
||
|
if scale >= 10:
|
||
|
draw_tree(pen, scale // 2)
|
||
|
elif scale < 10:
|
||
|
draw_leaf(pen, scale)
|
||
|
else:
|
||
|
pass
|
||
|
pen.pu()
|
||
|
pen.setpos(back)
|
||
|
|
||
|
def draw_leaf(pen, scale=5):
|
||
|
back = pen.pos()
|
||
|
pen.color("green")
|
||
|
pen.pd()
|
||
|
factor_width = 1
|
||
|
factor_length = scale
|
||
|
for _ in range(20):
|
||
|
pen.forward(factor_length)
|
||
|
pen.begin_fill()
|
||
|
pen.circle(scale * factor_width)
|
||
|
pen.circle(-scale * factor_width)
|
||
|
pen.end_fill()
|
||
|
factor_width *= 0.8
|
||
|
factor_length *= 0.7
|
||
|
pen.setpos(back)
|
||
|
pen.color("brown")
|
||
|
|
||
|
|
||
|
|
||
|
def setup_pen():
|
||
|
pen = Pen()
|
||
|
pen.ht()
|
||
|
pen.pu()
|
||
|
pen.setheading(90)
|
||
|
pen.speed(0)
|
||
|
pen.screen.setup(1000, 550)
|
||
|
pen.screen.title("Beautiful tree :)")
|
||
|
pen.screen.bgcolor("white")
|
||
|
pen.setpos(0, -240)
|
||
|
return pen
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
pen = setup_pen()
|
||
|
## draw_leaf(pen, 50)
|
||
|
draw_tree(pen)
|
||
|
input('All done!\nPress Enter to quit')
|
||
|
exit()
|