您现在的位置是:首页 >学无止境 >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()
效果
总结
海龟画图还真是研究了不少时间,画了好些图形,这两个算是完成的比较好的。五环比较简单,有现成函数画圆,只需要调整位置和笔画粗细及颜色就完成了;企鹅难度大点,用到好几种图形:椭圆、三角形、不规则图形,颜色也是好几种。还有位置角度,这些调整起来比较麻烦。