python学习:海龟绘图

在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟(turtle)在屏幕上绘图。

海龟绘图(Turtle Graphics)后来被移植到各种高级语言中,Python内置了turtle库,基本上100%复制了原始的Turtle Graphics的所有功能。

收录的海龟作图的基本函数

urtleScreen类 绘图窗口定义为绘图龟的操场

函数Screen() 返回一个TurtleScreen子类的单例对象

RawTurtle(别名:RawPen) 在TurtleScreen上绘制的Turtle对象

 

 

一、移动并绘制:

1、forward() | fd() turtle.forward(distance) turtle.fd(distance) 参数:distance - 一个数字(整数或浮点数)

2、turtle.back(distance) turtle.bk(distance) turtle.backward(distance) 后退若干

3、turtle.right(angle) turtle.rt(angle) 右转角度 turtle.heading()  显示当前朝向

4、turtle.left(angle) turtle.lt(angle) 左转角度

5、turtle.goto(xy=None)

turtle.setpos(xy=None)

turtle.setposition(xy=None) 绝对移动位置

6、turtle.setx(x) turtle.sety(y) 绝对移动位置,只不过将 x,y 分开进行移动

7、turtle.setheading(to_angle) turtle.seth(to_angle) 设置朝向

8、turtle.home() 将龟移动到原点 , 坐标(0,0) , 并将其标题设置为其起始方向

9、turtle.circle(radius<半径>extent=None<角度,范围>steps=None<边数>) 如果半径为正,则逆时针绘制弧线,否则沿顺时针方向绘制弧线

10、turtle.dot(size=None*color) 给出size必须>1 用颜色画出一个直径大小的圆点

11、turtle.stamp() turtle.clearstamp(stampid) 在当前乌龟位置上将海龟形状的副本印到画布上,可以通过调用clearstamp(stamp_id)将其删除

12、turtle.clearstamps(n=None) 删除所有或第一张/最后一张海龟的邮票。如果n为None,则删除所有的邮票,如果n> 0删除前n个邮票,否则如果n <0删除后n个邮票

13、turtle.undo() 撤销上一步 turtle.speed(speed=None) 画笔速度

14、turtle.position()turtle.pos() 返回(x,y)位置

15、turtle.distance(xy=None) 以龟步单位返回从乌龟到(x,y),给定向量或给定的其他乌龟的距离

16、turtle.radians() 将角度测量单位设置为弧度。相当于度(2 * math.pi)

17、turtle.pendown() turtle.pd() turtle.down() 落笔

18、turtle.penup() turtle.pu() turtle.up() 起笔

19、turtle.pensize(width=None) turtle.width(width=None) 笔宽

20、turtle.pen(pen=None**pendict) 小画布

21、turtle.pencolor(*args)     画笔颜色 turtle.fillcolor(*args) 填充色 turtle.color(*args) 同时设置画笔,填充颜色,可使用0~3种颜色

22、turtle.begin_fill() turtle.end_fill() 开始结束填充

23、turtle.reset() 从屏幕上删除乌龟的图纸,重新将乌龟居中并将变量设置为默认值

24、turtle.clear() 从屏幕上删除乌龟的图纸。不要移动乌龟。乌龟的状态和位置以及其他乌龟的图纸不受影响

25、turtle.write(argmove=Falsealign="left"font=("Arial"8"normal")) 写文本 - arg的字符串表示 - 根据对齐(“左”,“中”或“右”)和给定字体在当前海龟位置,如果移动为真,笔将移动到文本的右下角。默认情况下,移动为False, font 是一个三元组(fontname<字体名>,fontsize<字体大小>,fonttype<字体类型>)

26、turtle.hideturtle() turtle.ht() 隐藏乌龟 turtle.showturtle() turtle.st() 乌龟可见

27、turtle.shape(name=None) 将龟形状设置为具有给定名称的形状

28、turtle.tilt(angle) 从当前倾斜角度旋转海龟形状,但不要改变海龟的朝向(移动方向)

29、turtle.settiltangle(angle) 无论当前的倾斜角度如何,旋转龟形指向角度指定的方向。不要改变乌龟的朝向(移动方向)


海归作图的基本方法


直接导入函数用循环方便很多


绘制五角星


或者导入模块,这样


递归绘制树


使用递归,可以绘制出非常复杂的图形。例如,下面的代码可以绘制一棵分型树:(借鉴于廖雪峰大佬的博客)

from turtle import *

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

lt(90)

lv = 14
l = 120
s = 45

width(lv)

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

penup()
bk(l)
pendown()
fd(l)

def draw_tree(l, level):
    global r, g, b
    # save the current pen width
    w = width()

    # narrow the pen width
    width(w * 3.0 / 4.0)
    # set color:
    r = r + 1
    g = g + 2
    b = b + 3
    pencolor(r % 200, g % 200, b % 200)

    l = 3.0 / 4.0 * l

    lt(s)
    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)

    # restore the previous pen width
    width(w)

speed("fastest")

draw_tree(l, 4)

done()

 


版权声明:本文为qq_42002794原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。