17db96d56Sopenharmony_ci""" turtle-example-suite: 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci tdemo_wikipedia3.py 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciThis example is 67db96d56Sopenharmony_ciinspired by the Wikipedia article on turtle 77db96d56Sopenharmony_cigraphics. (See example wikipedia1 for URLs) 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciFirst we create (ne-1) (i.e. 35 in this 107db96d56Sopenharmony_ciexample) copies of our first turtle p. 117db96d56Sopenharmony_ciThen we let them perform their steps in 127db96d56Sopenharmony_ciparallel. 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ciFollowed by a complete undo(). 157db96d56Sopenharmony_ci""" 167db96d56Sopenharmony_cifrom turtle import Screen, Turtle, mainloop 177db96d56Sopenharmony_cifrom time import perf_counter as clock, sleep 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cidef mn_eck(p, ne,sz): 207db96d56Sopenharmony_ci turtlelist = [p] 217db96d56Sopenharmony_ci #create ne-1 additional turtles 227db96d56Sopenharmony_ci for i in range(1,ne): 237db96d56Sopenharmony_ci q = p.clone() 247db96d56Sopenharmony_ci q.rt(360.0/ne) 257db96d56Sopenharmony_ci turtlelist.append(q) 267db96d56Sopenharmony_ci p = q 277db96d56Sopenharmony_ci for i in range(ne): 287db96d56Sopenharmony_ci c = abs(ne/2.0-i)/(ne*.7) 297db96d56Sopenharmony_ci # let those ne turtles make a step 307db96d56Sopenharmony_ci # in parallel: 317db96d56Sopenharmony_ci for t in turtlelist: 327db96d56Sopenharmony_ci t.rt(360./ne) 337db96d56Sopenharmony_ci t.pencolor(1-c,0,c) 347db96d56Sopenharmony_ci t.fd(sz) 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_cidef main(): 377db96d56Sopenharmony_ci s = Screen() 387db96d56Sopenharmony_ci s.bgcolor("black") 397db96d56Sopenharmony_ci p=Turtle() 407db96d56Sopenharmony_ci p.speed(0) 417db96d56Sopenharmony_ci p.hideturtle() 427db96d56Sopenharmony_ci p.pencolor("red") 437db96d56Sopenharmony_ci p.pensize(3) 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci s.tracer(36,0) 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci at = clock() 487db96d56Sopenharmony_ci mn_eck(p, 36, 19) 497db96d56Sopenharmony_ci et = clock() 507db96d56Sopenharmony_ci z1 = et-at 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci sleep(1) 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci at = clock() 557db96d56Sopenharmony_ci while any(t.undobufferentries() for t in s.turtles()): 567db96d56Sopenharmony_ci for t in s.turtles(): 577db96d56Sopenharmony_ci t.undo() 587db96d56Sopenharmony_ci et = clock() 597db96d56Sopenharmony_ci return "runtime: %.3f sec" % (z1+et-at) 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ciif __name__ == '__main__': 637db96d56Sopenharmony_ci msg = main() 647db96d56Sopenharmony_ci print(msg) 657db96d56Sopenharmony_ci mainloop() 66