今天接触了一下python中的turtle库,发现它的用法挺简单的,就想着自己用代码画一个其他人没有画过的,首先给大家介绍一下这个库。
turtle也叫海龟,是turtle绘图体系的python实现,它在1969年诞生,是主要用于程序设计入门,它是python语言的标准之一。
turtle库的原理:如同一只海龟,从正中心开始,在窗口上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可以变换颜色,改变宽度and so on。
绘图主要有以下几个步骤:
1.设置画板
2.设置画笔
3.控制海龟移动绘制图形
4.色彩填充
下面这些是turtle库的主要函数:
turtle.forward(distance)
turtle.fd(distance)
画笔向前移动distance距离
turtle.backward(distance)
turtle.back (distance)/ turtle.bk (distance)
画笔向后移动distance距离
turtle.right(degree)
turtle.rt(degree)
绘制方向向右旋转degree度
turtle.left(degree)
turtle.lt(degree)
绘制方向向左旋转degree度
turtle.penup() 抬起画笔,之后移动画笔不绘制图片
turtle.pendown() 落下画笔,之后移动画笔绘制图片
turtle.pensize() 设置画笔宽度
turtle.penup() 设置画笔颜色,常用的颜色
话不多说,实践出真知,唐僧哥哥的代码就分享给大家了,只不过不会配色,就没有上色:
import turtle as t
“”“
作者:SJL
时间:2020-3-24
”“”
def arm():
# 手臂
t.pu()# 抬起 画笔
t.goto(100, 10)# 控制画笔的下笔处
t.pd()# 放下画笔
t.color((0, 0, 0), "white")
t.pu()
t.seth(90)
t.fd(41)
t.seth(0)
t.fd(0)
t.pd()
t.begin_fill()
t.seth(170)
t.rt(50)
t.circle(300, -30)# 长度,弧度
t.circle(40, -70)
t.circle(40, -100)
t.seth(100)#角度
t.circle(-200, 10)
t.end_fill()
def hand():
# 手
t.pu()
t.goto(130, -125)# 控制画笔的下笔处
t.pd()# 放下画笔
t.seth(124)
t.circle(14, -180) # 长度,弧度
def head():
# 头
t.pu()
t.goto(100, 50) # 控制画笔的下笔处
t.pd() # 放下画笔
# 下面的一条线
t.seth(0)
t.lt(165)
t.circle(330, 30) # 长度,弧度
# 左边的一条线
t.rt(-90)
t.circle(190, -30) # 长度,弧度
# 上面耳朵左边的线
t.rt(-90)
t.circle(320, 20)
# 耳朵
t.seth(-50)
t.circle(10, -260)
# 耳朵右边的线
t.rt(56)
t.circle(170, 20)
t.rt(-100)
t.circle(190, -25)
t.rt(25)
t.circle(25, -70)
def eye():
# 眼
t.pu()
t.goto(122, 120) # 控制画笔的下笔处
t.pd() # 放下画笔
t.begin_fill()
t.seth(200)
#t.rt(50)
t.circle(10, -190) # 长度,弧度
t.color((0, 0, 0), "black")
t.end_fill()
# 眼睛框
t.pu()
t.goto(122, 120) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(-155)
t.fd(70)
def diadema():
# 王冠
t.pu()
t.goto(-70, 150) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(105)
t.fd(65)
t.rt(110)
t.fd(45)
t.rt(-105)
t.fd(60)
t.rt(110)
t.fd(60)
t.rt(-110)
t.fd(45)
t.rt(120)
t.fd(72)
t.pu()
t.goto(10, 198) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(-150)
t.fd(25)
t.seth(-50)
t.circle(18, -260)
t.rt(140)
t.fd(24)
def body():
# 身体
t.pu()
t.goto(-73, 50) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(33)
t.circle(580, 25) # 长度,弧度
# 转弯
t.rt(10)
t.circle(40, 110) # 长度,弧度
# 下摆
t.rt(10)
t.circle(860, 16) # 长度,弧度
# 转弯
t.rt(10)
t.circle(38, 110) # 长度,弧度
# 上升
t.rt(15)
t.circle(240, 18) # 长度,弧度
def cassock():
# 袈裟
t.pu()
t.goto(-73, 50) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(180)
t.circle(230, 48) # 长度,弧度
# 横向纹路
# 第一道
t.pu()
t.goto(-100, 0) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(-10)
t.circle(200, 16) # 长度,弧度
# 第二道
t.pu()
t.goto(-126, -55) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(16)
t.circle(555, 15) # 长度,弧度
# 第三道
t.pu()
t.goto(-146, -120) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(15)
t.circle(810, 16) # 长度,弧度
t.pu()
t.goto(132, -125) # 控制画笔的下笔处
t.pd() # 放下画笔
t.lt(2)
t.circle(38, 16) # 长度,弧度
# 第四道
t.pu()
t.goto(-160, -185) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(32)
t.circle(1138, 16) # 长度,弧度
# 纵向纹路
#第一行
t.pu()
t.goto(-50, -5) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(110)
t.circle(200, 16) # 长度,弧度
#第二行
t.pu()
t.goto(-95, -59) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(20)
t.circle(240, 16) # 长度,弧度
t.pu()
t.goto(0, -63) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(10)
t.circle(250, 16) # 长度,弧度
# 第三行
t.pu()
t.goto(-50, -135) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(15)
t.circle(230, 16) # 长度,弧度
t.pu()
t.goto(50, -135) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(15)
t.circle(230, 16) # 长度,弧度
# 第四行
t.pu()
t.goto(-100, -195) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(22)
t.circle(165, 16) # 长度,弧度
t.pu()
t.goto(0, -201) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(12)
t.circle(160, 16) # 长度,弧度
t.pu()
t.goto(100, -196) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(3)
t.circle(165, 16) # 长度,弧度
def stick():
# 棍子
t.pu()
t.goto(-73, 50) # 控制画笔的下笔处
t.pd() # 放下画笔
t.rt(130)
t.fd(160) # 长度,弧度
t.lt(90)
t.fd(15) # 长度,弧度
t.lt(90)
t.fd(158) # 长度,弧度
def backpack():
#行囊
t.pu()
t.goto(-180, 75) # 控制画笔的下笔处
t.pd() # 放下画笔
# 结
t.rt(0)
t.circle(10,360) # 长度,弧度
# 结的下面
t.rt(-150)
t.circle(100, -60) # 长度,弧度
t.rt(20)
t.circle(40, -100) # 长度,弧度
t.lt(-30)
t.circle(105, -60) # 长度,弧度
# 结的上面
t.pu()
t.goto(-180, 95) # 控制画笔的下笔处
t.pd() # 放下画笔
# t.seth(-100)
# t.circle(50, -120)
if __name__ == "__main__":
t.pensize(4) # 笔号
t.hideturtle() # 隐藏笔头
t.colormode(255)
t.setup(1000, 800)# 设置窗口大小
t.speed(10)
arm()
hand()
head()
eye()
diadema()
body()
cassock()
stick()
backpack()
w = t.Screen()
# w.screensize(500, 400, 'grey')
w.exitonclick()# 画面停留
实例效果:
温馨提醒:苹果用户如果直接运行不成功的话,试试终端运行。
最后补充一下setup和screensize的不同:
1、关于setup有明确的定义,它包括4个参数width,height,startx,starty。
setup定义窗体的大小和相对位置,并隐含定义了画布的位置,缺省是居中占整个屏幕的一半【setup() 】,
它同时隐含定义了画布的大小为400,300【screensize()】
窗体是一个活动的苹果/windows窗口,画布是窗体中间包含的部分
2、screensize包括3个参数,定义了画布的大小和背景色
需要注意的是,screensize定义画布大小,缺省是400,300
例如,setup定义一个800*600的画布
setup(800,600,400,200)
然后用screensize()查画布大小,返回的画布大小是400,300
输入:screensize()
返回:(400, 300)
用screensize设置画布大小及背景色,screensize(400,300,'grey'),
会在相同位置创建相同大小的画布,背景色改为灰色
注意:窗体和画布不是一个概念,如果画布大于窗体,会出现滚动条,反之画布填充窗体