Spaces:
Build error
Build error
#!/usr/bin/env python3 | |
""" turtle-example-suite: | |
tdemo_tree.py | |
Displays a 'breadth-first-tree' - in contrast | |
to the classical Logo tree drawing programs, | |
which use a depth-first-algorithm. | |
Uses: | |
(1) a tree-generator, where the drawing is | |
quasi the side-effect, whereas the generator | |
always yields None. | |
(2) Turtle-cloning: At each branching point | |
the current pen is cloned. So in the end | |
there are 1024 turtles. | |
""" | |
from turtle import Turtle, mainloop | |
from time import perf_counter as clock | |
def tree(plist, l, a, f): | |
""" plist is list of pens | |
l is length of branch | |
a is half of the angle between 2 branches | |
f is factor by which branch is shortened | |
from level to level.""" | |
if l > 3: | |
lst = [] | |
for p in plist: | |
p.forward(l) | |
q = p.clone() | |
p.left(a) | |
q.right(a) | |
lst.append(p) | |
lst.append(q) | |
for x in tree(lst, l*f, a, f): | |
yield None | |
def maketree(): | |
p = Turtle() | |
p.setundobuffer(None) | |
p.hideturtle() | |
p.speed(0) | |
p.getscreen().tracer(30,0) | |
p.left(90) | |
p.penup() | |
p.forward(-210) | |
p.pendown() | |
t = tree([p], 200, 65, 0.6375) | |
for x in t: | |
pass | |
def main(): | |
a=clock() | |
maketree() | |
b=clock() | |
return "done: %.2f sec." % (b-a) | |
if __name__ == "__main__": | |
msg = main() | |
print(msg) | |
mainloop() | |