| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | """      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(). | 
					
						
							|  |  |  | """
 | 
					
						
							| 
									
										
										
										
											2008-09-21 07:32:10 +00:00
										 |  |  | from turtle import Screen, Turtle, mainloop | 
					
						
							| 
									
										
										
										
											2017-10-17 14:46:45 -07:00
										 |  |  | from time import perf_counter as clock, sleep | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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() | 
					
						
							| 
									
										
										
										
											2017-05-18 07:35:54 -07:00
										 |  |  |     while any(t.undobufferentries() for t in s.turtles()): | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  |         for t in s.turtles(): | 
					
						
							|  |  |  |             t.undo() | 
					
						
							|  |  |  |     et = clock() | 
					
						
							| 
									
										
										
										
											2010-11-01 18:42:01 +00:00
										 |  |  |     return "runtime: %.3f sec" % (z1+et-at) | 
					
						
							| 
									
										
										
										
											2008-06-10 04:44:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     msg = main() | 
					
						
							|  |  |  |     print(msg) | 
					
						
							|  |  |  |     mainloop() |