Spaces:
Running
Running
""" turtle-example-suite: | |
tdemo_round_dance.py | |
(Needs version 1.1 of the turtle module that | |
comes with Python 3.1) | |
Dancing turtles have a compound shape | |
consisting of a series of triangles of | |
decreasing size. | |
Turtles march along a circle while rotating | |
pairwise in opposite direction, with one | |
exception. Does that breaking of symmetry | |
enhance the attractiveness of the example? | |
Press any key to stop the animation. | |
Technically: demonstrates use of compound | |
shapes, transformation of shapes as well as | |
cloning turtles. The animation is | |
controlled through update(). | |
""" | |
from turtle import * | |
def stop(): | |
global running | |
running = False | |
def main(): | |
global running | |
clearscreen() | |
bgcolor("gray10") | |
tracer(False) | |
shape("triangle") | |
f = 0.793402 | |
phi = 9.064678 | |
s = 5 | |
c = 1 | |
# create compound shape | |
sh = Shape("compound") | |
for i in range(10): | |
shapesize(s) | |
p =get_shapepoly() | |
s *= f | |
c *= f | |
tilt(-phi) | |
sh.addcomponent(p, (c, 0.25, 1-c), "black") | |
register_shape("multitri", sh) | |
# create dancers | |
shapesize(1) | |
shape("multitri") | |
pu() | |
setpos(0, -200) | |
dancers = [] | |
for i in range(180): | |
fd(7) | |
tilt(-4) | |
lt(2) | |
update() | |
if i % 12 == 0: | |
dancers.append(clone()) | |
home() | |
# dance | |
running = True | |
onkeypress(stop) | |
listen() | |
cs = 1 | |
while running: | |
ta = -4 | |
for dancer in dancers: | |
dancer.fd(7) | |
dancer.lt(2) | |
dancer.tilt(ta) | |
ta = -4 if ta > 0 else 2 | |
if cs < 180: | |
right(4) | |
shapesize(cs) | |
cs *= 1.005 | |
update() | |
return "DONE!" | |
if __name__=='__main__': | |
print(main()) | |
mainloop() | |