Fix issue number in comment.
[python.git] / Demo / turtle / tdemo_tree.py
blob3c7178cdefe86743626ec2b82f83658e9dbd266b
1 #!/usr/bin/python
2 """ turtle-example-suite:
4 tdemo_tree.py
6 Displays a 'breadth-first-tree' - in contrast
7 to the classical Logo tree drawing programs,
8 which use a depth-first-algorithm.
10 Uses:
11 (1) a tree-generator, where the drawing is
12 quasi the side-effect, whereas the generator
13 always yields None.
14 (2) Turtle-cloning: At each branching point the
15 current pen is cloned. So in the end there
16 are 1024 turtles.
17 """
18 from turtle import Turtle, mainloop
19 from time import clock
21 def tree(plist, l, a, f):
22 """ plist is list of pens
23 l is length of branch
24 a is half of the angle between 2 branches
25 f is factor by which branch is shortened
26 from level to level."""
27 if l > 3:
28 lst = []
29 for p in plist:
30 p.forward(l)
31 q = p.clone()
32 p.left(a)
33 q.right(a)
34 lst.append(p)
35 lst.append(q)
36 for x in tree(lst, l*f, a, f):
37 yield None
39 def maketree():
40 p = Turtle()
41 p.setundobuffer(None)
42 p.hideturtle()
43 p.speed(0)
44 p.tracer(30,0)
45 p.left(90)
46 p.penup()
47 p.forward(-210)
48 p.pendown()
49 t = tree([p], 200, 65, 0.6375)
50 for x in t:
51 pass
52 print len(p.getscreen().turtles())
54 def main():
55 a=clock()
56 maketree()
57 b=clock()
58 return "done: %.2f sec." % (b-a)
60 if __name__ == "__main__":
61 msg = main()
62 print msg
63 mainloop()