diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2008-06-04 06:29:55 +0000 |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2008-06-04 06:29:55 +0000 |
commit | 8718459f0f7f42f9fedf1f7525c52bd7ac16b51b (patch) | |
tree | 99aa2c451de1149763fee3b11906524d87a0ef5e /Demo/turtle/tdemo_tree.py | |
parent | 4ed3ed13c5c82f4b46d633cb7f61d6218d6ed320 (diff) | |
download | cpython-git-8718459f0f7f42f9fedf1f7525c52bd7ac16b51b.tar.gz |
Patch #1513695: New turtle module, with demos.
Diffstat (limited to 'Demo/turtle/tdemo_tree.py')
-rw-r--r-- | Demo/turtle/tdemo_tree.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Demo/turtle/tdemo_tree.py b/Demo/turtle/tdemo_tree.py new file mode 100644 index 0000000000..3c7178cdef --- /dev/null +++ b/Demo/turtle/tdemo_tree.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +""" 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 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.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 + print len(p.getscreen().turtles()) + +def main(): + a=clock() + maketree() + b=clock() + return "done: %.2f sec." % (b-a) + +if __name__ == "__main__": + msg = main() + print msg + mainloop() |