aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/turtledemo/rosette.py
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2018-06-29 01:10:05 -0400
committerGitHub <noreply@github.com>2018-06-29 01:10:05 -0400
commit891a1f86d415779cf67ca23e626a868e586feb05 (patch)
treea852ba9e57d42f72ff2a9b79ef805b993b9dfebb /Lib/turtledemo/rosette.py
parentd904c238ca3551750cb97d15d827c3e525970867 (diff)
downloadcpython-891a1f86d415779cf67ca23e626a868e586feb05.tar.gz
cpython-891a1f86d415779cf67ca23e626a868e586feb05.zip
bpo-14117: Make minor tweaks to turtledemo (GH-8002)
The 'wikipedia' example is now 'rosette', describing what it draws. The 'penrose' print output is reduced. The 'tree' '1024' output is eliminated.
Diffstat (limited to 'Lib/turtledemo/rosette.py')
-rw-r--r--Lib/turtledemo/rosette.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/Lib/turtledemo/rosette.py b/Lib/turtledemo/rosette.py
new file mode 100644
index 00000000000..47d0f00e9da
--- /dev/null
+++ b/Lib/turtledemo/rosette.py
@@ -0,0 +1,65 @@
+""" turtle-example-suite:
+
+ tdemo_wikipedia3.py
+
+This example is
+inspired by the Wikipedia article on turtle
+graphics. (See example wikipedia1 for URLs)
+
+First we create (ne-1) (i.e. 35 in this
+example) copies of our first turtle p.
+Then we let them perform their steps in
+parallel.
+
+Followed by a complete undo().
+"""
+from turtle import Screen, Turtle, mainloop
+from time import perf_counter as clock, sleep
+
+def mn_eck(p, ne,sz):
+ turtlelist = [p]
+ #create ne-1 additional turtles
+ for i in range(1,ne):
+ q = p.clone()
+ q.rt(360.0/ne)
+ turtlelist.append(q)
+ p = q
+ for i in range(ne):
+ c = abs(ne/2.0-i)/(ne*.7)
+ # let those ne turtles make a step
+ # in parallel:
+ for t in turtlelist:
+ t.rt(360./ne)
+ t.pencolor(1-c,0,c)
+ t.fd(sz)
+
+def main():
+ s = Screen()
+ s.bgcolor("black")
+ p=Turtle()
+ p.speed(0)
+ p.hideturtle()
+ p.pencolor("red")
+ p.pensize(3)
+
+ s.tracer(36,0)
+
+ at = clock()
+ mn_eck(p, 36, 19)
+ et = clock()
+ z1 = et-at
+
+ sleep(1)
+
+ at = clock()
+ while any(t.undobufferentries() for t in s.turtles()):
+ for t in s.turtles():
+ t.undo()
+ et = clock()
+ return "runtime: %.3f sec" % (z1+et-at)
+
+
+if __name__ == '__main__':
+ msg = main()
+ print(msg)
+ mainloop()