Turtle海龟画图

介绍

简单的一个窗口绘图工具。

提供一个小海龟,可以看做一个机器人,能够听得懂有限的命令。

 

三种命令

运动命令

forward(d)  向前移动D长度

backward(d) 向后移动D长度

right(d)     向右转动多少度

left(d)      向左转动多少度

goto(x,y)    移动到坐标(x,y)位置

speed(d)    笔画绘制速度[0,10]

笔画控制命令

up()           笔画抬起,在移动的时候不会画图

down()         笔画落下,移动会画图

setheading(d)    改变海龟的朝向

pensize(d)       笔画的宽度

pencolor(“red”)  笔画的颜色

reset()       恢复所有设置 清空窗口 重置turtle状态

clear()   清空窗口 但不会重置turtle

circle(r, steps=e)  绘制一个圆形,r为半径,e可以不填

填充颜色

begin_fill()

filecolor(color)

end_fill()

其他命令

done()        程序继续执行

undo()        撤销上一步动作

hideturtle()    隐藏海龟

showturtle()   显示海龟

screensize(x, y) 调整海龟正在绘制的画布的大小

导入

只需要导入turtle即可

import turtle

绘图窗口的原点(0,0)在正中间,默认海龟的方向是右侧。

简单图形

圆形

简单,直接用系统函数,不用多管。

代码如下:

t = turtle.Turtle()
t.hideturtle()

t.circle(40)

等边三角形

三个角加起来180度,即可;只需要注意前进和后退笔画。

代码如下:

t = turtle.Turtle()
t.hideturtle()

t.right(60)
t.forward(50)
t.left(60)
t.backward(50)
t.left(60)
t.forward(50)

多边形

6个边的多边形

代码如下:

t = turtle.Turtle()
t.hideturtle()

for i in range(0, 6):
    t.right(60)
    t.forward(30)

复杂实例

五环

代码如下:

import turtle


if __name__ == '__main__':

    t = turtle.Turtle()

    t.speed(10)
    t.pensize(15)
    t.hideturtle()

    t.up()
    t.goto(-180, 100)
    t.down()
    t.color('blue')
    t.circle(80)

    t.up()
    t.goto(0, 100)
    t.down()
    t.color('#000')
    t.circle(80)

    t.up()
    t.goto(180, 100)
    t.down()
    t.color('red')
    t.circle(80)

    t.up()
    t.goto(-100, 10)
    t.down()
    t.color('yellow')
    t.circle(80)

    t.up()
    t.goto(90, 10)
    t.down()
    t.color('green')
    t.circle(80)

    turtle.done()

效果

 

企鹅

代码如下:

import turtle

def draw_ellipse(a, b):
    """
    画椭圆形
    @a:0.4
    @b:0.04
    """

    for i in range(120):
        if 0 <= i < 30 or 60 <= i < 90:
            a = a + b
            t.left(3)
            t.forward(a)
        else:
            a = a - b
            t.left(3)
            t.forward(a)


def draw_eye():
    """ 绘制眼睛 """

    # 左眼睛
    t.up()
    t.goto(-20, 210)
    t.down()
    t.color('#000')
    t.begin_fill()
    draw_ellipse(0.2, 0.025)
    t.end_fill()

    # 左眼睛-光
    t.up()
    t.goto(-20, 228)
    t.down()
    t.color('#fff')
    t.begin_fill()
    draw_ellipse(0.04, 0.005)
    t.end_fill()

    # 右眼睛
    t.up()
    t.goto(20, 210)
    t.down()
    t.color('#000')
    t.begin_fill()
    draw_ellipse(0.2, 0.025)
    t.end_fill()

    # 右眼睛-光
    t.up()
    t.goto(20, 228)
    t.down()
    t.color('#fff')
    t.begin_fill()
    draw_ellipse(0.04, 0.005)
    t.end_fill()


def draw_arm():
    """ 绘制两个手臂 """

    # 左手臂
    t.up()
    t.goto(-150, 40)
    t.down()
    t.color('#312F32', '#49444A')
    t.begin_fill()
    t.left(30)
    t.forward(170)
    t.right(90)
    t.backward(100)
    t.right(60)
    t.forward(200)
    t.end_fill()

    # 右手臂
    t.up()
    t.goto(160, 40)
    t.down()
    t.color('#312F32', '#49444A')
    t.begin_fill()
    t.right(-90)
    t.backward(170)
    t.left(100)
    t.forward(100)
    t.right(130)
    t.forward(180)
    t.end_fill()


def draw_mouth(x, y, length):
    """ 绘制嘴巴 """
    t.up()
    t.goto(x, y)
    t.down()
    t.color('#312F32', '#EB3E2D')

    t.begin_fill()
    t.left(30)
    t.forward(length)
    t.right(30)
    t.forward(length)
    t.right(30)
    t.forward(length)

    t.left(60)
    t.backward(length)
    t.right(30)
    t.backward(length)
    t.right(30)
    t.backward(length)
    t.end_fill()


def draw_foot():
    """ 绘制脚 """

    # 左脚
    t.left(30)
    t.up()
    t.goto(-40, 15)
    t.down()
    t.color('#312F32', '#FF4C2D')
    t.begin_fill()
    t.left(60)
    t.backward(60)
    t.right(60)
    t.forward(60)
    t.right(60)
    t.backward(60)
    t.end_fill()

    # 右脚
    t.left(60)
    t.up()
    t.goto(40, 15)
    t.down()
    t.color('#312F32', '#FF4C2D')
    t.begin_fill()
    t.left(60)
    t.backward(60)
    t.right(60)
    t.forward(60)
    t.right(60)
    t.backward(60)
    t.end_fill()


if __name__ == '__main__':
    t = turtle.Turtle()
    t.hideturtle()
    t.pensize(2)
    t.speed(500)

    # 手臂
    draw_arm()

    # 身体
    t.up()
    t.goto(0, 0)
    t.left(60)
    t.color('#312F32', '#49444A')
    t.begin_fill()
    draw_ellipse(2, 0.25)
    t.end_fill()

    # 白肚皮
    t.down()
    t.color('#312F32', '#fff')
    t.begin_fill()
    draw_ellipse(1.6, 0.20)
    t.end_fill()

    # 眼睛
    draw_eye()

    # 嘴巴
    draw_mouth(-28, 195, 20)

    # 绘制脚
    draw_foot()

    turtle.done()

效果

 

总结

海龟画图还真是研究了不少时间,画了好些图形,这两个算是完成的比较好的。五环比较简单,有现成函数画圆,只需要调整位置和笔画粗细及颜色就完成了;企鹅难度大点,用到好几种图形:椭圆、三角形、不规则图形,颜色也是好几种。还有位置角度,这些调整起来比较麻烦。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值