1""" turtle-example-suite: 2 3 tdemo_round_dance.py 4 5(Needs version 1.1 of the turtle module that 6comes with Python 3.1) 7 8Dancing turtles have a compound shape 9consisting of a series of triangles of 10decreasing size. 11 12Turtles march along a circle while rotating 13pairwise in opposite direction, with one 14exception. Does that breaking of symmetry 15enhance the attractiveness of the example? 16 17Press any key to stop the animation. 18 19Technically: demonstrates use of compound 20shapes, transformation of shapes as well as 21cloning turtles. The animation is 22controlled through update(). 23""" 24 25from turtle import * 26 27def stop(): 28 global running 29 running = False 30 31def main(): 32 global running 33 clearscreen() 34 bgcolor("gray10") 35 tracer(False) 36 shape("triangle") 37 f = 0.793402 38 phi = 9.064678 39 s = 5 40 c = 1 41 # create compound shape 42 sh = Shape("compound") 43 for i in range(10): 44 shapesize(s) 45 p =get_shapepoly() 46 s *= f 47 c *= f 48 tilt(-phi) 49 sh.addcomponent(p, (c, 0.25, 1-c), "black") 50 register_shape("multitri", sh) 51 # create dancers 52 shapesize(1) 53 shape("multitri") 54 pu() 55 setpos(0, -200) 56 dancers = [] 57 for i in range(180): 58 fd(7) 59 tilt(-4) 60 lt(2) 61 update() 62 if i % 12 == 0: 63 dancers.append(clone()) 64 home() 65 # dance 66 running = True 67 onkeypress(stop) 68 listen() 69 cs = 1 70 while running: 71 ta = -4 72 for dancer in dancers: 73 dancer.fd(7) 74 dancer.lt(2) 75 dancer.tilt(ta) 76 ta = -4 if ta > 0 else 2 77 if cs < 180: 78 right(4) 79 shapesize(cs) 80 cs *= 1.005 81 update() 82 return "DONE!" 83 84if __name__=='__main__': 85 print(main()) 86 mainloop() 87