(root)/
Python-3.12.0/
Lib/
turtledemo/
rosette.py
       1  """      turtle-example-suite:
       2  
       3            tdemo_wikipedia3.py
       4  
       5  This example is
       6  inspired by the Wikipedia article on turtle
       7  graphics. (See example wikipedia1 for URLs)
       8  
       9  First we create (ne-1) (i.e. 35 in this
      10  example) copies of our first turtle p.
      11  Then we let them perform their steps in
      12  parallel.
      13  
      14  Followed by a complete undo().
      15  """
      16  from turtle import Screen, Turtle, mainloop
      17  from time import perf_counter as clock, sleep
      18  
      19  def mn_eck(p, ne,sz):
      20      turtlelist = [p]
      21      #create ne-1 additional turtles
      22      for i in range(1,ne):
      23          q = p.clone()
      24          q.rt(360.0/ne)
      25          turtlelist.append(q)
      26          p = q
      27      for i in range(ne):
      28          c = abs(ne/2.0-i)/(ne*.7)
      29          # let those ne turtles make a step
      30          # in parallel:
      31          for t in turtlelist:
      32              t.rt(360./ne)
      33              t.pencolor(1-c,0,c)
      34              t.fd(sz)
      35  
      36  def main():
      37      s = Screen()
      38      s.bgcolor("black")
      39      p=Turtle()
      40      p.speed(0)
      41      p.hideturtle()
      42      p.pencolor("red")
      43      p.pensize(3)
      44  
      45      s.tracer(36,0)
      46  
      47      at = clock()
      48      mn_eck(p, 36, 19)
      49      et = clock()
      50      z1 = et-at
      51  
      52      sleep(1)
      53  
      54      at = clock()
      55      while any(t.undobufferentries() for t in s.turtles()):
      56          for t in s.turtles():
      57              t.undo()
      58      et = clock()
      59      return "runtime: %.3f sec" % (z1+et-at)
      60  
      61  
      62  if __name__ == '__main__':
      63      msg = main()
      64      print(msg)
      65      mainloop()