您现在的位置是:首页 >学无止境 >Turtle海龟画图网站首页学无止境
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()效果

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




 U8W/U8W-Mini使用与常见问题解决
U8W/U8W-Mini使用与常见问题解决 QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。... stm32使用HAL库配置串口中断收发数据(保姆级教程)
stm32使用HAL库配置串口中断收发数据(保姆级教程) 分享几个国内免费的ChatGPT镜像网址(亲测有效)
分享几个国内免费的ChatGPT镜像网址(亲测有效) Allegro16.6差分等长设置及走线总结
Allegro16.6差分等长设置及走线总结