mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Co-authored-by: Wulian <xiguawulian@gmail.com> Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""turtledemo/round_dance.py
 | 
						|
 | 
						|
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()
 |