相关资料来自百度百科,以及MOOC教程。
turtle(海龟)是Python重要的标准库之一,
它能够进行基本的图形绘制。
turtle图形绘制的概念诞生于1969年,
成功应用于LOGO编程语言。
turtle库绘制图形有一个基本框架:
一个画笔在坐标系中移动,其运动轨迹形成了绘制图形。
刚开始绘制时,画笔位于画布正中央,此处坐标为(0,0),前进方向为水平向右。
另外,turtle库使用RGB色彩模式。
利用setup()来设置。
# setup各项参数
turtle.setup(width, height, startx, starty)
setup()设置窗体大小及位置
4个参数中后两个可选
setup()不是必须的
空间坐标体系
>>>>>>>>>画笔位于正中间(0,0)的位置。<<<<<<<<<<<<<
import 库引用首先学了个实例,绘制小蛇。其中第一行。便是import的使用。
什么是import呢?
而import的用法也是很多。
教学实例是小蛇的绘制。
这里先把画小蛇的三种使用import的方法写出来:
第一种
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()
第二种
from turtle import *
setup(650, 350, 200, 200)
penup() fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40, 80)
circle(-40, 80)
circle(40, 80/2)
fd(40)
circle(16, 180)
fd(40 * 2/3)
done()
第三种
import turtle as t
t.setup(650, 350, 200, 200)
t.penup() t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i in range(4):
t.circle(40, 80)
t.circle(-40, 80)
t.circle(40, 80/2)
t.fd(40)
t.circle(16, 180)
t.fd(40 * 2/3)
t.done()
经过观察发现第二种好像更简便,
实则第二种限制会比较多,
只能用单个库里面的函数。
不过也可以作为一种借鉴。
所以使用第三种代码更好一点。
那么每行的作用是什么呢。
画笔操作后一直有效,一般成对出现
turtle.penup()
也可以写 turtle.pu()
抬起画笔
turtle.pendown()
也可以写 turtle.pd()
落下画笔
画笔的移动:
①直线移动
turtle.forward(d)
也可以写 turtle.fd(d)
向前移动,画笔走直线
d: 行进距离,可以为负数
②曲线移动
turtle.circle
(r, extent=None)
根据半径r绘制extent角度的弧形
r: 默认圆心在海龟左侧r距离的位置 extent:
绘制角度,默认是360度整圆
画笔的方向:
①绝对角度 turtle.setheading(angle)
也可以写 turtle.seth(angle)
改变移动方向,画笔旋转一定角度
angle: 行进方向的绝对角度(x轴y轴水平坐标体系)
②相对角度
turtle.left(angle)
画笔向左转
turtle.right(angle)
画笔向右转
angle: 在海龟当前行进方向上旋转的角度
画笔设置后一直有效,直至下次重新设置
画笔宽度:turtle.pensize(width) 也可以写 turtle.width(width)
画笔颜色:turtle.pencolor(color) color为颜色字符串或r,g,b值
》》》》这里画笔的颜色color可以有三种形式。《《《《
代码中另外一个要点就是循环语句的实现。
range()
函数
产生循环计数序列
range(N)
产生 0 到 N-1的整数序列,共N个
range(M,N)
产生 M 到 N-1的整数序列,共N-M个
最后,我自己尝试写了个痛恨 喜爱的钉钉绘制
orz有点草陋。先放上预览图:
代码如下:
from turtle import*
def Goto(x,y):
penup()
goto(x,y)
pendown()
ht()
speed(0)
colormode(255)
bgcolor(0,120,215)
screensize(250,250)
setup(250,250)
Goto(0,-70)
pencolor(46,160,240)
fillcolor(46,160,240)
begin_fill()
circle(70,360)
end_fill()
Goto(10,-53)
fillcolor(255,255,255)
pencolor(255,255,255)
begin_fill()
seth(50)
fd(36)
seth(180)
fd(11)
seth(60)
fd(39)
seth(154)
fd(87)
seth(270)
fd(21)
seth(-24)
fd(38)
seth(172)
fd(30)
seth(-49)
fd(18)
seth(0)
fd(25)
seth(192)
fd(21)
seth(-39)
fd(20)
seth(10)
fd(14)
seth(-110)
fd(18)
seth(0)
fd(10)
seth(251)
fd(22)
end_fill()
done()