通过Turtle库在Python中绘制一个鼠年福鼠
作者:州的先生 发布时间:2021-03-01 03:48:12
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()
运行上述代码,我们可以看到鼠头可以完整地绘制出来了,如下动图所示:
二、绘制身体
接着,咱们来绘制老鼠的身体。我们(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()
运行上述代码,我们可以看到老鼠身体的绘制过程,如下动图所示:
这里先不将其汇合在一起,待几个部件都完成之后,我们再将其组成一个完整地老鼠。
三、绘制手
上面绘制的身体还缺了两只手,对了,还有袍子上的一个大金钱,我们将其补上:
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()
拱手和金钱没有和身体结合在一起时,暂时看不出上面效果来,如下动图所示:
四、绘制帽子
老鼠还戴了一顶金钱帽,咱们(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()
帽子主要都是由圆构成,其绘制过程如下动图所示:
五、绘制尾巴
先不着急为老鼠带上金钱帽,我们还忘记了老鼠有一根长长的尾巴,为它补上吧:
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中绘制一个鼠年福鼠,希望对大家有帮助!
来源:https://zmister.com/archives/1426.html
猜你喜欢
- 兼容当前HTML/XHTML文档是否有DTD声明:以下为程序代码:var xtop = document.documentElement.s
- 本文实例讲述了js捐赠管理完整实现方法。分享给大家供大家参考。具体实现方法如下:index.html页面如下:<!DOCTYPE ht
- 么是约瑟夫问题?约瑟夫问题是一个有趣的数学游戏,游戏规则如下:1、N个人围成一个圈,编号从1开始,依次到N。2、编号为M的游戏参与者开始报数
- 安装环境:python版本2.7.5 ,win7系统安装Djangohttps://www.djangoproject.com/downlo
- 阅读上一篇教程:WEB2.0网页制作标准教程(9)第一个CSS布局实例如果我们想在3列布局的最后加一行页脚,放版权之类的信息。就遇到必须对齐
- TXT文本文件,WORD文档点击后弹出另存为对话框,然后保存下载,而不是在浏览器中打开的asp实现方法,使用了asp中的stream对象,同
- 1 简介本篇主要介绍使用pytorch实现基于CharRNN来进行文本分类与内容生成所需要的相关知识,并最终给出完整的实现代码。2 相关AP
- 在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子:#! encoding=UTF-8 class A:
- 相关的题外话:一、操作系统window系统内部都是unicode的。文件夹名,文件名等都是unicode的,任何语言系统下都能正常显示。二、
- 你好,一般情况下,Ctrl+C 是最简单的方法,当无法 Ctrl+C 时,我们借助于 Python,以下是具体步骤:第一步,安装工具库1、t
- 我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在SQL中“field like
- 本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下目录简介实现过程结语简介使用python实现pygame版的五
- ABS(x) 函数,此函数用来返回一个数的绝对值。 ACOS(x)函数,返回X的反余弦值。X范围从1到-1,输入值从0到派,以弧度为单位。
- 这样做的好处是:利用表格来装载数据,不言而喻是最好的,你可以很灵活的为每个单元格定义样式。下面是具体的做法首先在photoshop设计一个效
- 目录前言super的用法super的原理Python super()使用注意事项混用super与显式类调用不同种类的参数总结前言Python
- 网页制作中是免不了与表格打交道的。表格是网页制作的基础,在网页布局中起着举足轻重的作用,熟练掌握表格的操作,是你制作网页的辅路石,也是你成为
- 本文实例讲述了php自定义函数实现二维数组按指定key排序的方法。分享给大家供大家参考,具体如下:二维数组官方的排序方法并不好,该函数可以进
- 本文介绍了一种将英文字符首个字母串转换为大写的asp代码,当然这个功能可能英文网站比较有用。转换大写功能英文介绍:Code Title: P
- 一,斑马线的数据集数据集的构成:testtrainzebra corssing:56zebra corssing:168other:54ot
- PRD的作用之一在于,保留产品设计初衷,期望达到什么样的目的,起到事后验证的效果。产品初衷需要做到利益最大化,找最大的蛋糕,为最大目标人群服