2014年12月4日 星期四

HW1_3_對原有圖形進行座標方向的修改

from turtle import *

def main():

    reset()
    Screen()
    up()
    width(25)
    color("red3")
    goto(0,-170)
    down()
    circle(170)


    up()
    width(25)
    color("orange")
    goto(0,-170)
    down()
    circle(140)

    up()
    width(25)
    color("yellow")
    goto(0,-170)
    down()
    circle(110)

    up()
    width(25)
    color("seagreen4")
    goto(0,-170)
    down()
    circle(80)
   
    up()
    width(25)
    color("orchid4")
    goto(0,-170)
    down()
    circle(50)
   
    up()
    width(25)
    color("royalblue1")
    goto(0,-170)
    down()
    circle(20)

    color("dodgerblue4")
    goto(0,-300) # vanish if hideturtle() is not available ;-)

    up()
    goto(-50,250);
    write("彩虹扇子完成~", font= 50)

   
    return "Done!"

if __name__ == "__main__":
    main()
    mainloop()

HW01_2_更改圖形變化方向(發散)及色彩

from turtle import Screen, Turtle, mainloop
from time import clock, sleep

def mn_eck(p, ne,sz):
    turtlelist = [p]
    #create ne-1 additional turtles
    for i in range(1,ne):
        q = p.clone()
        q.rt(180.0/ne)
        turtlelist.append(q)
        p = q
    for i in range(ne):
        c = abs(ne/2.0-i)/(ne*.7)
        # let those ne turtles make a step
        # in parallel:
        for t in turtlelist:
            t.rt(360./ne)
            t.pencolor(1-c,0,c)
            t.fd(sz)
    for i in range(1,ne):
        q = p.clone()
        q.rt(90.0/ne)
        turtlelist.append(q)
        p = q
    for i in range(ne):
        c = abs(ne/2.0-i)/(ne*.7)
        # let those ne turtles make a step
        # in parallel:
        for t in turtlelist:
            t.rt(180./ne)
            t.pencolor(1-c,0,c)
            t.fd(sz)

def main():
    s = Screen()
    s.bgcolor("purple")
    p=Turtle()
    p.speed(0)
    p.hideturtle()
    p.pencolor("black")
    p.pensize(3)

    s.tracer(36,0)

    at = clock()
    mn_eck(p, 36, 19)
    et = clock()
    z1 = et-at

    sleep(1)

    at = clock()
    while any([t.undobufferentries() for t in s.turtles()]):
        for t in s.turtles():
            t.undo()
    et = clock()
    return "runtime: %.3f sec" % (z1+et-at)


if __name__ == '__main__':
    msg = main()
    print(msg)
    mainloop()

HW01_1_改變圖形及其個數與色彩大小等

from turtle import *

def stop_running():
    global running
 
    running= False

def create_compound_shape(basic_shape= 'square'):
    '''
    由基本形狀,製造出複合形狀。
    '''
    shape(basic_shape)  

    f=   .7 # fraction
    a=   10 # angle
    s=    6 # size
    c=    1 # color
     
    sh= Shape("compound")
 
    #
    # 用 8個 基本形狀 結合成 1個 複合形狀
    #
    for i in range(8):
     
        shapesize(s)
        tilt(a)
     
        p=  get_shapepoly()

        c1= (  c, 0.2, 1-c)
        c2= (1-c, 0.8,   c)
     
        sh.addcomponent(p, c1, c2)
     
        s *= f
        c *= f

    return sh

def create_dancers():

    global dancers

    clearscreen()
    bgcolor("blue") # 背景色。
    tracer(False)
 
    sh= create_compound_shape()
    register_shape('dancer', sh)
    shape('dancer')
 
    pu(); goto(0, -200)
 
    dancers= []
    for i in range(180):
        fd(8); lt(2); tilt(4)

        if i % 10 == 0:
            d=     clone()
            dancers += [d]

    home()

    update()


def dancers_running():
 
    global running
    global dancers
 
    running= True
 
    t= 0
    while running:

     
        for d in dancers:
            d.fd(8); d.lt(2); d.tilt(4)

   
        rt(4)    

   
        t %= 100
        s= t if t<50 else (100-t)
        if s==0: s += .1

        shapesize(s)

        t += .1

        update()
     
def write_mesage():
    '''
    按鍵說明。
    '''
    pencolor('white')
 
    goto(-300,300);
    write("Key-x:     start, 開始", font= 30)
 
    goto(-300,280);
    write("Key-x: stop, 停", font= 30)

    pencolor('black')

    goto(-70,0);
    write("轉吧轉吧八彩正方形", font= 30)
 
    home()

def main():
    global running, dancers

    create_dancers()

    write_mesage()
 
    onkey(dancers_running,'z')     # 用 'z' 鍵 來開始
    onkey(stop_running,   'xx') # 用 'x' 來停止

    listen()
 
    return "DONE!"


if __name__=='__main__':

    msg= main()
    print(msg)
    mainloop()