绘图窗口上,默认有一个原点(0,0)在画布正中间的坐标轴,并且默认的朝向是右侧(X轴正方向)的小海龟。
命令说明
forward(d) 向前移动d长度
backward(d) 向后移动d长度
right(a) 向右转动多少度
left(a) 向左转动多少度
goto(x,y) 移动到坐标为(x,y)的位置
speed(speed) 笔画绘制的速度[0,10]
up() 笔画抬起
down() 笔画绘制
setheading(d) 改变还贵的朝向
pensize() 笔画宽度
pencolor(colorstr) 笔画颜色
reset() 恢复所有设置,清空窗口,重置turtle状态
clear() 清空窗口,但不重置turtle状态
circle(r,steps=e) 绘制一个圆形,r为半径,e为次数(可不写,不写就是一个完整的圆)
begin_fill() 开始填充
fillcolor(colorstr) 填充颜色
end_fill() 结束填充
done() #程序继续运行
undo() #撤销上一次动作
hideturtle() #隐藏海龟
showturtle() #显示海龟
screensize(x,y) #屏幕尺寸
默认规则
"standard"模式逆时针 | "logo"模式顺时针 |
---|---|
0 - east | 0 - north |
90 - north | 90 - east |
180 - west | 180 - south |
270 - south | 270 - west |
如下图“standard”模式时(默认0时表示x方向向右即向东);“logo”模式时(默认0时表示y方向向上即向北)
y“logo”时
^
|
|
|
(0,0)——————> x“standard”时
运动命令
import turtle #外部库必须先导入
turtle.forward(100) #或turtle.fd(100)
#从原点位置,向前移动100单位(默认向右)
turtle.backward(200) #或turtle.back(200) 或turtle.bk(200)
#在上图基础上,后退200个单位。小海龟方向还是向右
turtle.right(45) # turtle.rt(45)
#向右转动多少度,与上图相比,小海龟方向发生变化。
turtle.left(90) #或turtle.lt(90)
#向左转动多少度
turtle.goto(60,30) #或turtle.setpos(60,30) 或turtle.setposition(60,30)
#移动到绝对位置,参数为(x轴,y轴)
turtle.setx(15)
#y轴不变,更改x轴坐标(移动坐标点,而不是长度)
turtle.sety(15)
#x轴不变,更改y轴坐标(移动坐标点,而不是长度)
turtle.seth(90) #或turtle.setheading(to_angle)
#直接将小海龟的朝向转到90度,standard模式下,90度即指向北方
turtle.home()
# 将位置和方向恢复到初始状态,位置初始坐标为(0,0),方向初始为("standard"模式为right向右即东,"logo"模式是up向上即北)
# 如下图,小海龟回到原点位置,方向向右的初始状态
圆和多边形的画法
turtle.circle(100, extent=None, steps=None)
# 如下图,小海龟在的位置是原点位置,注意circle命令并不是以原点为中心画圆。而是以原点为起点换一个半径为100的圆
#radius(a number,圆半径,为正数则逆时针画,为负数则顺时针画,方向随着轨迹的变化而变化)
#extent(a number or None,一个角度,决定哪部分圆圈被绘制,不提供extent表示画完整的圆)
#steps(an integer or None,指定半径radius前提下,完成extent的角度时,分了几步,如画正5边形时
turtle.circle(100, extent=90, steps=None)
#extent是一个角度,一个圆是360度,90度即1/4个圆
turtle.circle(100, None, 10)
#注意:None的N要大写,
#点的画法
turtle.dot() #按给定直径size画圆点
turtle.fd(50)
turtle.dot(5, "blue") # 以直径为5画蓝色圆点
turtle.fd(50)
turtle.dot(20, "red") # 以直径为20画红色圆点
turtle.fd(50)
# turtle.dot(size=None, *color)
箭头控制
turtle.stamp()是在当前位置拷贝一份此时箭头的形状,返回一个stamp_id(int型),请观察下面2种方式的不同。
turtle.color("red")
turtle.fd(50)
turtle.stamp()
turtle.fd(50)
turtle.stamp()
turtle.fd(50)
turtle.color("red")
turtle.fd(50)
turtle.fd(50)
turtle.fd(50)
turtle.clearstamps(n=None),n为None时表示删除所有拷贝的箭头形状;为0不删除;n > 0 表示删除前n个,n < 0 表示删除后n个
stamp_id = turtle.stamp()
turtle.clearstamp(stamp_id)用来删除指定stamp_id的箭头形状
turtle.clearstamps(1)
#删除前一个复制的箭头
turtle.clearstamps(2)
#删除前两个复制的箭头
turtle.clearstamps(-2)
#删除后面两个复制的箭头
turtle.clearstamps()
#删除全部复制的箭头