Programming Pandit

c/c++/c#/Javav/Python


Latest Update

Thursday, September 10, 2020

Round Dance Design Python programming Demo by G Krishna Chauhan

Source Code


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






No comments:

Post a Comment