1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- """ 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()
|