symbian-qemu-0.9.1-12/python-2.6.1/Demo/turtle/tdemo_tree.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #!/usr/bin/python
       
     2 """      turtle-example-suite:
       
     3 
       
     4              tdemo_tree.py
       
     5 
       
     6 Displays a 'breadth-first-tree' - in contrast
       
     7 to the classical Logo tree drawing programs,
       
     8 which use a depth-first-algorithm.
       
     9 
       
    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
       
    20 
       
    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
       
    38 
       
    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())
       
    53 
       
    54 def main():
       
    55     a=clock()
       
    56     maketree()
       
    57     b=clock()
       
    58     return "done: %.2f sec." % (b-a)
       
    59 
       
    60 if __name__ == "__main__":
       
    61     msg = main()
       
    62     print msg
       
    63     mainloop()