diff options
| author | Martin v. Löwis <martin@v.loewis.de> | 2008-06-10 04:44:07 (GMT) |
|---|---|---|
| committer | Martin v. Löwis <martin@v.loewis.de> | 2008-06-10 04:44:07 (GMT) |
| commit | 97cf99fc7e8c56868711f7c91c3b1e37e4c66cba (patch) | |
| tree | 6b43643ebc4dc74dd084df06e9163134818423bf /Demo/turtle/tdemo_tree.py | |
| parent | b38fea34bfc67ab5780804a511efe34f49d11e45 (diff) | |
| download | cpython-97cf99fc7e8c56868711f7c91c3b1e37e4c66cba.zip cpython-97cf99fc7e8c56868711f7c91c3b1e37e4c66cba.tar.gz cpython-97cf99fc7e8c56868711f7c91c3b1e37e4c66cba.tar.bz2 | |
Patch #3064: Port new turtle module and demos to 3.0.
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 0000000..3e7f34f --- /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 tkinter.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.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 + 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() |
