1.绘图坐标体系

turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。对于小海龟来说,有“前进”、“后退”、“旋转”等爬行行为,对坐标系的探索也通过“前进方向”、“后退方向”、“左侧方向”和“右侧方向”等小海龟自身角度方位来完成。刚开始绘制时,小海龟位于画布正中央,此处坐标为(0,0),行进方向为水平右方。
例如,用如下代码绘制图坐标系:
turtle.setup(width, height, startx, starty)
作用:设置主窗体的大小和位置。
width:窗口宽度,如果值是整数,表示像素值;如果值是小数,表示窗口与屏幕的比例。
height:窗口高度,如果值是整数,表示像素值;如果值是小数,表示窗口与屏幕的比例。
startx:窗口左侧与屏幕左侧的像素距离,如果值是 None ,窗口位于屏幕水平中央。
starty:窗口顶侧与屏幕顶侧的像素距离,如果值是 None ,窗口位于屏幕垂直中央。

2.画笔控制函数

(1)turtle.penup()和turtle.pendown()函数

turtle.penup(),别名turtle.pu()和turtle.up()
作用:抬起画笔,之后移动画笔不绘制形状。
参数:无。
turtle.pendown(),别名turtle.pd()和turtle.down()
作用:落下画笔,之后移动画笔将绘制形状。
参数:无。

(2)turtle.pensize()函数

turtle.pensize()函数用来设置画笔尺寸,函数定义如下:

turtle.pensize(width)

turtle.pensize()函数别名turtle.width()
作用:设置画笔宽度,当无参数输入时返回当前画笔宽度。
参数:width是设置的画笔线条宽度,如果为None或者为空,则函数返回当前画笔宽度。

(3)turtle.pencolor()函数

turtle.pencolor(colorstring)或turtle.pencolor((r,g,b))
作用:设置画笔颜色,当无参数输入时返回当前画笔颜色。
参数:colorstring表示颜色的字符串,例如“purple”、“red”、“blue”等。(r,g,b)表示颜色对应的RGB数值,例如(51,204,140)。
很多RGB颜色都有固定的英文名字,这些英文名字可以作为colorstring输入到turtle.pencolor()函数中,也可以采用(r,g,b)形式直接输入颜色值。

部分典型RGB颜色对照表:

英文名称RGB十六进制中文名称
white(255,255,255)#FFFFFF白色
black(0,0,0)#000000黑色
grey(190,190,190)#BEBEBE灰色
darkgreen(0,100,0)#006400深绿色
gold(255,215,0)#FFD700金色
violet(238,130,238)#EE82EE紫罗兰
purple(160,32,240)#A020F0紫色

拓展:RGB颜色

RGB颜色是计算机系统最常用的颜色体系之一,它采用R(红色)、G(绿色)、B(蓝色)3种基本颜色及它们的叠加组成各式各样的颜色,构成颜色体系。理论表明,RGB颜色能够形成人眼感知的所有颜色。
具体来说,RGB颜色采用(r,g,b)表示,其中,每个颜色采用8bit表示,取值范围是[0,255]。因此,RGB颜色一共可以表示2563(16M,约1 678万)种颜色。

3.形状绘制函数

(1)turtle.fd()函数

turtle通过一组函数控制画笔的行进动作,进而绘制形状。turtle.fd()函数最常用来控制画笔向当前行进方向前进一个距离,函数定义如下:
turtle.fd(distance)别名turtle.forward(distance)
作用:向小海龟当前行进方向前进distance距离。
参数:distance表示行进距离的像素值,当值为负数时,表示向相反方向前进。

(2)turtle.seth()函数

turtle.seth()函数用来改变画笔绘制方向。
turtle.seth(to_angle)别名turtle.setheading(to_angle)
作用:设置小海龟当前行进方向为 to_angle,该角度是绝对方向角度值。
参数:to_angle表示角度的整数值。

turtle库的角度坐标体系

turtle库的角度坐标体系以正东方向为绝对0度,这也是小海龟初始爬行方向,正西向为绝对180度,这个方向坐标体系是方向的绝对方向体系,与小海龟爬向当前方向无关。因此,可以利用这个绝对坐标体系随时更改小海龟的前进方向。

(3)for循环语句

for i in range(<循环次数>):
	<语句块1>

这是另一种循环结构,称为“遍历循环”。

(4)turtle.circle()函数

turtle.circle(radius, extent=None)
作用:根据半径radius绘制extent角度的弧形。
参数:radius表示弧形半径,当值为整数时,半径在小海龟左侧;当值为负数时,半径在小海龟右侧。extent表示绘制弧形的角度,当不设置参数或参数设置为None时,绘制整个圆形。

4.函数的封装

import turtle
def drawSnake(radius, angle, length):
    turtle.seth(-40)
    for i in range(length):
        turtle.circle(radius, angle)
        turtle.circle(-radius, angle)
    turtle.circle(radius, angle/2)
    turtle.fd(40)
    turtle.circle(16, 180)
    turtle.fd(40* 2/3)
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
drawSnake(40, 80, 4)
turtle.done()

其中,第2-10行通过保留字 def 定义了 drawSnake()函数,将蟒蛇绘制这个独立功能封装起来。
通过保留字 def 定义的函数是自定义函数。自定义函数与turtle库提供的函数不同,它们是用户自己定义实现的。

更多推荐

Python自学05-turtle库语法元素分析