Turtle是一个绘图库,是python的标准库之一。以下分析如何绘制紫色蟒蛇的简单案例。
代码:pthonDraw.py
import turtle as tt #【1】turtle库导入,取[别名]为tt
tt.setup(650, 350 , 200, 200) #【2】绘制显示的窗体 (width,height,startx,starty)
tt.penup() #【3】画笔抬起
tt.fd(-250) #【4】向后倒退250个像素
tt.pendown() #【5】画笔落下
tt.pensize(25) #【6】画笔的宽度 25像素
tt.pencolor("purple") #【7】画图的颜色
tt.seth(-40) #【8】向右转40度
for i in range(4): #【9】循环4次
tt.circle(40, 80) #【10】在海龟的左侧绘制半径为40,80度的圆
tt.circle(-40, 80) #【11】在海龟的右侧绘制半径为40,80度的圆
tt.circle(40, 80/2) #【12】在海龟的左侧绘制半径为40,40度的圆
tt.fd(40) #【13】往前走40像素
tt.circle(16, 180) #【14】在海龟的左侧绘制半径为16,180度的圆
tt.fd(40 * 2/3) #【15】往前
tt.done() #【16】程序结束后不要立即退出
知识点分析:
以下将要用到的符号: [ ] 里的内容表示‘可选’
( ) 表示函数方法
< > 类型名称
【1】import
turtle是Pyhon标准库
标 准 库:标准库就是在Pyhon解释器安装的时候就包含了这个库文件,要import使用的时候无需另外下载安装。
第三方库:要使用的时候需下载安装才能进行import导入。
import用法一:import <模块名> [as <别名>]
作用:导入模块并给该模块起一个简洁的别名,后续别名就代表这个模块,有些模块的原名又臭又长,
简洁的别名方便我们书写,提高代码编写速度。
特点:仅先导入模块名称,只有在真正使用的时候才利用<模块名>/<模块别名>.<函数名>()的方式导入函数。
用法:a、<模块名>.<函数名>()
b、<别名>.<函数名>()
缺点:每次使用函数的时候都需要先写<模块名>/<模块别名>. 会有些繁琐,重复性的代码。
优点:很好的避免了函数命名冲突。如turtle模块有个setup()函数,而我们也自定义了一个setup函数,此时使用turtle.setup()的方式就可避免冲突。
这句代码的意思是使用turtle模块中的setup函数,而不是其他地方的。
import用法二:from <模块名> import*
作用:一次性导入该模块中所有的函数。
特点:与【1】的区别是,【1】只有当<别名>.函数()时才会把该函数引用进来,
而【2】是一次性就把所有的函数都引用了。后续就可以直接使用函数,而不用再库名/库别名.<函数名>()
缺点:a、由于导入过多的函数,所以会消耗一定的系统资源。
b、如果程序中导入了很多库或者程序代码较多,有函数命名冲突的风险。
import用法三:from <模块名> import <具体函数名>
作用:从模块中导入要某函数。一般只有明确的知道只用到个别函数的情况下使用。
特点:明确只导入某函数,其他的不需要。
优点:当代码较少时可使用该方式。
缺点:如果要使用该模块中的许多函数,而需要导入很多次。
【2】窗体绘制
setup(width, height, [startx, startx])
width:窗体的宽
heigh:窗体的高
startx:窗体的起始点(左上角)的x坐标(相对于电脑屏幕的位置,显示屏左上角是起始点(0, 0))
starty:窗体的起始点(左上角)的y坐标(相对于电脑屏幕的位置,显示屏左上角是起始点(0, 0))
startx,startx同时不写时就默认在屏幕居中显示
【3】penup() 的别名 pu()
【4】forward的简称,向前移动。
正值代表往前,-负值代表倒退。由于画笔是抬起的,所以此时移动画笔时不会进行绘制。扩展:turtle.bk() 向后倒退。
fd(10)与bk(-10)的效果是一样的。
【5】pendown()的别名 pd()
【6】pensize()的别名 width()
【7】turtle.pencolor(color)
color可为颜色字符串或者RGB值。字符串:"purple" ; RGB整数:160, 32, 240 ; RGB小数:0.63,0.13,0.94
RGB彩色模式:RGB每色取值有2种模式,模式1:0-255正数 模式2:0-1小数
默认采用小数值,可切换为正数值。
切换方法为 turtle.colormode(mode)
mode > 1.0 RGB小数值模式
255 RGB整数值模式
【8】seth(angle) 全称:setheading()。
改变海龟的行进角度,只改变角度不前进。正数代表往左,负代表往右。
Tutle的绝对角度坐标
90/-270度
↑ Y
|
|
180/-180度 | 0/360度
<-------------------------------> x
|
|
|
|
270/-90度
海龟角度: turtle.left(angle)
turtle.right(angle)
这里的angle填整数即可。
【9】for <变量> in range(参数):
<被循环执行的语句>
<变量>每次循环叠加1
-range(N) 产生0 到 N-1的整数序列,共N个 eg:range[2] 0 1
-range(N, M) 产生N到M-1的整数序列,共M-N个。 eg:range[1,3] 1 2
【10】turtle.circle(r, extent=None)
绘制半径为r,度数为extent的圆。
r:圆半径。圆心默认在海龟左侧r的距离。 负数表示在海龟的右侧。 海龟默认是面对屏幕的东方。
extent:表示绘制的圆的完整度,默认是360度(一个完整的圆)。90,圆为90度,则是4分之一圆。
【16】done() 作用是让程序执行完后不要立即退出。
Turtle的空间坐标:
↑ Y
|
a(-100, 100) | b(100, 100)
|
<-------------------------------> x
|
c(-100, -100) | d(100, -100)
|
|
如,turtle.goto(-100, 100)就是往a点转向
setup()的startx,starty是绝对坐标。