通过Turtle库在Python中绘制一个鼠年福鼠


Posted in Python onFebruary 03, 2020

turtle库是一个很经典的绘图库,其最初来自于1967年创造的logo编程语言,之后被Python编写放到了Python的内置模块中。网络上有很多借助于turtle绘制精美图像的案例。比如小猪佩奇、皮卡丘、柯基犬等等。趁着新年假期还未结束,今天州的先生(https://zmister.com)为大家带来一个福鼠的绘制。

一、绘制鼠头

首先,咱们(https://zmister.com)把鼠的头给绘制了。鼠头主要是由圆来构成,脸庞是一个大圆,耳朵、眉毛、眼睛、嘴角和鼻子也都是由不同弧度的圆构成。鼠头的绘制代码如下所示:

def head():
 turtle.color('black')

 # 脸轮廓
 turtle.pd() # 落笔
 turtle.circle(50) # 画一个半径为50的圆
 turtle.pu() # 提笔

 # 右耳轮廓
 turtle.goto(50,60) # 移动到x=50,y=60的位置
 turtle.pd() # 落笔
 turtle.circle(30,260) # 画一个半径为30,角度为245的圆弧
 turtle.pu() # 提笔
 # 右耳耳纹
 turtle.goto(30,90)
 turtle.pd()
 turtle.seth(65)
 turtle.circle(-30,70)
 turtle.pu()

 # 左耳轮廓
 turtle.goto(-50,60)
 turtle.pd()
 turtle.seth(180) # 设置方向为西,
 turtle.circle(-30,260)
 turtle.pu()
 # 左耳耳纹
 turtle.goto(-30,90)
 turtle.pd()
 turtle.seth(120)
 turtle.circle(30,70)
 turtle.pu()

 # 面部五官
 # 右侧眉毛
 turtle.goto(5,80)
 turtle.seth(20)
 turtle.pd()
 turtle.circle(-25,40)
 turtle.pu()
 # 左侧眉毛
 turtle.goto(-5,80)
 turtle.seth(160)
 turtle.pd()
 turtle.circle(25,40)
 turtle.pu()

 # 右侧眼睛
 turtle.begin_poly()
 turtle.goto(8,60)
 turtle.seth(45)
 turtle.pd()
 turtle.circle(-15,120)
 turtle.pu()
 turtle.goto(8,60)
 turtle.seth(40)
 turtle.pd()
 turtle.circle(-15,100)
 turtle.pu()
 turtle.end_poly()

 # 左侧眼睛
 turtle.goto(-8,60)
 turtle.seth(135)
 turtle.pd()
 turtle.circle(15,120)
 turtle.pu()
 turtle.goto(-8,60)
 turtle.seth(140)
 turtle.pd()
 turtle.circle(15,100)
 turtle.pu()

 # 鼻子
 # 鼻子上瓣
 turtle.goto(-6,45)
 turtle.seth(70)
 turtle.pd()
 turtle.circle(-6,150)
 turtle.pu()
 # 鼻子下瓣
 turtle.goto(-6,45)
 turtle.seth(-70)
 turtle.pd()
 turtle.circle(6,150)
 turtle.pu()

 # 鼻线
 turtle.goto(0,40)
 turtle.seth(270)
 turtle.pd()
 turtle.forward(7)
 turtle.pu()

 # 上嘴线
 turtle.seth(200)
 turtle.pd()
 turtle.circle(-15,60)
 turtle.pu()

 turtle.goto(0,33)
 turtle.seth(-20)
 turtle.pd()
 turtle.circle(15,60)
 turtle.pu()

 # 下嘴线
 turtle.goto(10,33)
 turtle.seth(260)
 turtle.pd()
 turtle.circle(-15,65)
 turtle.pu()

 turtle.goto(-10,33)
 turtle.seth(280)
 turtle.pd()
 turtle.circle(15,65)
 turtle.pu()

 # 牙齿
 turtle.goto(4,33)
 turtle.seth(270)
 turtle.pd()
 turtle.forward(4)
 turtle.seth(180)
 turtle.forward(8)
 turtle.seth(90)
 turtle.forward(4)
 turtle.pu()

 # 胡须
 turtle.pensize(2)
 turtle.goto(30,30)
 turtle.seth(8)
 turtle.pd()
 turtle.circle(-60,40)
 turtle.pu()

 turtle.goto(30,25)
 turtle.seth(-5)
 turtle.pd()
 turtle.circle(-60,40)
 turtle.pu()


 turtle.goto(-30,30)
 turtle.seth(172)
 turtle.pd()
 turtle.circle(60,40)
 turtle.pu()

 turtle.goto(-30,25)
 turtle.seth(188)
 turtle.pd()
 turtle.circle(60,40)
 turtle.pu()

 # 睫毛
 turtle.pensize(1)
 turtle.goto(30,58)
 turtle.seth(20)
 turtle.pd()
 turtle.circle(20,20)
 turtle.pu()

 turtle.pensize(1)
 turtle.goto(28,62)
 turtle.seth(25)
 turtle.pd()
 turtle.circle(20,12)
 turtle.pu()

 turtle.pensize(1)
 turtle.goto(-30,58)
 turtle.seth(160)
 turtle.pd()
 turtle.circle(-20,20)
 turtle.pu()

 turtle.pensize(1)
 turtle.goto(-28,62)
 turtle.seth(165)
 turtle.pd()
 turtle.circle(-20,12)
 turtle.pu()

运行上述代码,我们可以看到鼠头可以完整地绘制出来了,如下动图所示:

通过Turtle库在Python中绘制一个鼠年福鼠

二、绘制身体

接着,咱们来绘制老鼠的身体。我们(https://zmister.com)画的这个老鼠是一个穿着财神服站立拱手的老鼠,所以它的身体需要重点突出的是服装:

def body():
 # 左手
 turtle.goto(-25,8)
 turtle.seth(240)
 turtle.pd()
 turtle.circle(150,15)
 turtle.seth(270)
 turtle.circle(40,15)
 turtle.circle(15,65)
 turtle.seth(0)
 turtle.forward(10)
 turtle.circle(10,100)
 turtle.seth(90)
 turtle.forward(5)
 turtle.circle(10,100)
 turtle.seth(180)
 turtle.forward(10)
 turtle.pu()
 # 右手
 turtle.goto(25,8)
 turtle.seth(-60)
 turtle.pd()
 turtle.circle(-150,15)
 turtle.seth(270)
 turtle.circle(-40,15)
 turtle.circle(-15,65)
 turtle.seth(180)
 turtle.forward(10)
 turtle.circle(-10,100)
 turtle.seth(90)
 turtle.forward(5)
 turtle.circle(-10,100)
 turtle.seth(0)
 turtle.forward(10)
 turtle.pu()

 # 袍子
 turtle.goto(-30,-48)
 turtle.seth(270)
 turtle.pd()
 turtle.forward(30)
 turtle.circle(10,100)
 turtle.seth(0)
 turtle.forward(38)
 turtle.circle(10,100)
 turtle.seth(90)
 turtle.forward(30)
 turtle.pu()

 # 领口
 turtle.goto(-20,4)
 turtle.pd()
 turtle.seth(300)
 turtle.circle(30,20)
 turtle.seth(0)
 turtle.forward(25)
 turtle.seth(30)
 turtle.circle(30,20)
 turtle.pu()

 # 官带
 turtle.goto(-7,-38)
 turtle.seth(0)
 turtle.pd()
 turtle.forward(15)
 turtle.pu()
 turtle.goto(-30,-54)
 turtle.pd()
 turtle.forward(60)
 turtle.pu()

 # 袍子上的波浪
 turtle.goto(-30,-80)
 turtle.pd()
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.pu()

 turtle.goto(-25,-85)
 turtle.pd()
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.seth(90)
 turtle.circle(-5,180)
 turtle.pu()

运行上述代码,我们可以看到老鼠身体的绘制过程,如下动图所示:

通过Turtle库在Python中绘制一个鼠年福鼠

这里先不将其汇合在一起,待几个部件都完成之后,我们再将其组成一个完整地老鼠。

三、绘制手

上面绘制的身体还缺了两只手,对了,还有袍子上的一个大金钱,我们将其补上:

def hands():
 turtle.goto(-8, -25)
 turtle.pd()
 turtle.seth(30)
 turtle.forward(10)
 turtle.seth(0)
 turtle.circle(-10, 50)
 turtle.seth(210)
 turtle.forward(18)

 turtle.back(10)
 turtle.seth(-45)
 turtle.forward(10)
 turtle.back(10)
 turtle.seth(30)
 turtle.forward(8)
 turtle.seth(300)
 turtle.forward(5)
 turtle.pu()

 turtle.goto(0, -75)
 turtle.pd()
 turtle.seth(0)
 turtle.circle(10)
 turtle.seth(90)
 turtle.circle(10, 90)
 turtle.seth(0)
 turtle.circle(10, 90)
 turtle.seth(270)
 turtle.circle(10, 90)
 turtle.seth(180)
 turtle.circle(10, 90)
 turtle.pu()

拱手和金钱没有和身体结合在一起时,暂时看不出上面效果来,如下动图所示:

通过Turtle库在Python中绘制一个鼠年福鼠

四、绘制帽子

老鼠还戴了一顶金钱帽,咱们(zmister.com)现在给它加上:

def hat():
 # 画帽子
 turtle.goto(-20,98)
 turtle.pd()
 turtle.seth(80)
 turtle.forward(20)
 turtle.seth(60)
 turtle.circle(-20,140)
 turtle.seth(-85)
 turtle.forward(18)
 turtle.pu()

 turtle.goto(-20,98)
 turtle.pd()
 turtle.seth(80)
 turtle.forward(5)
 turtle.seth(30)
 turtle.forward(22)
 turtle.seth(-25)
 turtle.forward(24)
 turtle.pu()

 turtle.goto(0,127)
 turtle.pd()
 turtle.seth(0)
 turtle.circle(5)
 turtle.pu()

 turtle.goto(0,125)
 turtle.pd()
 turtle.seth(270)
 turtle.forward(10)
 turtle.pu()

 # 右边抖带
 turtle.goto(19,110)
 turtle.pd()
 turtle.seth(30)
 turtle.circle(40,50)
 turtle.seth(0)
 turtle.circle(10)
 turtle.seth(90)
 turtle.circle(10,90)
 turtle.seth(0)
 turtle.circle(10,90)
 turtle.seth(270)
 turtle.circle(10,90)
 turtle.seth(180)
 turtle.circle(10,90)
 turtle.pu()

 # 左边抖带
 turtle.goto(-19,110)
 turtle.pd()
 turtle.seth(150)
 turtle.circle(-40,50)
 turtle.seth(0)
 turtle.circle(10)
 turtle.seth(90)
 turtle.circle(10,90)
 turtle.seth(0)
 turtle.circle(10,90)
 turtle.seth(270)
 turtle.circle(10,90)
 turtle.seth(180)
 turtle.circle(10,90)
 turtle.pu()

帽子主要都是由圆构成,其绘制过程如下动图所示:

通过Turtle库在Python中绘制一个鼠年福鼠

五、绘制尾巴

先不着急为老鼠带上金钱帽,我们还忘记了老鼠有一根长长的尾巴,为它补上吧:

def tail():
 turtle.goto(30, -60)
 turtle.pd()
 turtle.seth(20)
 turtle.circle(40, 80)
 turtle.circle(-20, 180)
 turtle.circle(-10, 90)

尾巴就是两个方向相反弧度不同的圆,效果我们就不演示了。最后将其结合在一起:

if __name__ == '__main__':
 head()
 body()
 hands()
 hat()
 tail()
 turtle.done()

我们就可以看到一个完整的鼠年福鼠绘制过程,如下动图所示:

通过Turtle库在Python中绘制一个鼠年福鼠

总结

以上所述是小编给大家介绍的通过Turtle库在Python中绘制一个鼠年福鼠,希望对大家有帮助!

Python 相关文章推荐
介绍Python中的fabs()方法的使用
May 14 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
django迁移数据库错误问题解决
Jul 29 Python
Django之PopUp的具体实现方法
Aug 31 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
Python自动登录QQ的实现示例
Aug 28 Python
Python 中如何写注释
Aug 28 Python
Python关于OS文件目录处理的实例分享
May 23 Python
python爬虫模块URL管理器模块用法解析
Feb 03 #Python
Tensorflow实现多GPU并行方式
Feb 03 #Python
python如何通过twisted搭建socket服务
Feb 03 #Python
关于Tensorflow分布式并行策略
Feb 03 #Python
基于python修改srt字幕的时间轴
Feb 03 #Python
Python实现不规则图形填充的思路
Feb 02 #Python
Python ORM编程基础示例
Feb 02 #Python
You might like
用php来检测proxy
2006/10/09 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
JavaScript基本对象
2007/01/11 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
Babel 入门教程学习笔记
2018/06/13 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python3处理HTTP请求的实例
2018/05/10 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
Python rstrip()方法实例详解
2018/11/11 Python
pyqt5实现登录界面的模板
2020/05/30 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
技校教师求职简历的自我评价
2013/10/20 职场文书
学生励志演讲稿
2014/01/06 职场文书
献爱心活动总结
2014/05/07 职场文书
小学运动会口号
2014/06/07 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
react中的DOM操作实现
2021/06/30 Javascript