10.18 海龟绘图-turtle

turtle库

一个通过turtle绘制长方形的简单代码:

from turtle import *

#笔刷宽度:width
width(4)

#前进:forward/fd
fd(200)
#右转90°:right/rt
rt(90)

#设置画笔颜色
pencolor('red')
fd(100)
rt(90)

pencolor('green')
fd(200)
rt(90)

pencolor('blue')
fd(100)
rt(90)

#调用done等待窗口被关闭,否则将会立刻关闭(或者会卡死)
done()

fd(200):在当前方向上绘制长度为200像素的线

rt(90):右转90°

在命令行运行上述代码,会自动弹出一个绘图窗口,然后绘制出一个长方形:

 

 从程序代码可以看出,海龟绘图就是指挥海龟前进、转向,海龟移动的轨迹就是绘制的线条。要绘制一个长方形,只需要让海龟前进、右转90°,重复4次。

绘图结束后,记得调用done()函数,让窗口进入消息循环,等待被关闭,否则,由于Python进程会立刻结束,将导致窗口被立刻关闭。

turtle包本身只是一个绘图库,但是配合Python代码,就可以绘制各种复杂的图形。例如,通过循环绘制5个五角星:

from turtle import *

def draw_star(x,y):
    pu()
    goto(x,y)
    pd()
    seth(0)
    for i in range(5):
        fd(40)
        rt(144)
for x in range(0,250,50):
    draw_star(x,0)
done()

pu():提起画笔,以便移动画笔位置时不在画布上留下痕迹

goto(x,y):绘图起点设置为(x,y)

pd():放下画笔,此时画笔的移动将会留下痕迹

seth(angle):设置绘图的方向,0为正向上,180为正向下

如下图为180

 下图则为0

 

 

使用递归,则可以绘制出非常复杂的图形。例如,下边的代码可以绘制一课分形树:

 

from turtle import *

#设置色彩模式是RGB
colormode(255)

lt(90)

lv=4
l=120
s=45
width(lv*3)

#初始化RGB颜色:
r=0;g=0;b=0
pencolor(r,g,b)

#pu()
bk(l)
#pd()
fd(l)

def draw_tree(l,level):
    global r,g,b
    #获得当前画笔尺寸
    w=width()
    #缩小画笔尺寸
    width(w*3/4)
    #设置颜色
    r=r+10
    g=g+20
    b=b+30
    pencolor(r%200,g%200,b%200)
    l=3/4*l
    lt(s) #左转45°
    fd(l)

    if level<lv:
        draw_tree(l,level+1)
    bk(l)
    rt(2*s)
    fd(l)

    if level<lv:
        draw_tree(l,level+1)
    bk(l)
    lt(s)
    #存储之前的画笔尺寸
    width(w)

speed('fastest')
draw_tree(l,1)
done()

 

posted @ 2020-10-19 13:38  ShineLe  阅读(340)  评论(0)    收藏  举报