blob: 10383614c6e974c7b0cbd3e9ad99ba8ee5371922 [file] [log] [blame]
Benjamin Peterson852f3cc2010-03-19 20:58:52 +00001""" 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()