mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 18:28:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			86 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """      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()
 | 
