用Python怎样画一个哆啦A梦,过程是怎样
Admin 2022-06-11 群英技术资讯 504 次浏览
本文基于64位windows系统(鼠标右键点击桌面“此电脑”图标――属性可查看电脑系统版本)、python3.x(pycharm自动安装的版本, 3.0以上)。文中代码内容所使用的工具是pycharm-community-2020.1
,实践中如有碰到问题,可留言提问。
前阵子有看到zh上有大神画了这个哆啦A梦的大头贴,自己也来试了一下,很简单,但长篇整段的代码对刚刚学会海龟绘图语法的初学者来说还是有一定难度,所以来做一个拆解版详细步骤讲解实现。
言归正传,先上效果图。
调整画笔粗细到8
隐藏画笔
画一个半径为120的圆
填充成蓝色(颜色值由取色吸管吸色测量得出)
import turtle as t t.pensize(8) t.hideturtle() # 猫脸外圈蓝色 t.fillcolor('#00A1E8') t.begin_fill() t.circle(120) t.end_fill()
调整画笔粗细到3
画一个半径为100的圆
填充成白色(颜色值由取色吸管吸色测量得出)
# 猫脸内圈白色 t.pensize(3) t.fillcolor('white') t.begin_fill() t.circle(100) t.end_fill()
抬起画笔
移动至坐标(0,134)准备画鼻子
调整画笔粗细到4
落下画笔
画一个半径为18的圆
填充成红色(颜色值由取色吸管吸色测量得出)
# 鼻子 t.penup() t.home() t.goto(0, 134) t.pendown() t.pensize(4) t.fillcolor("#EA0014") t.begin_fill() t.circle(18) t.end_fill()
抬起画笔
移动至坐标(7,155)准备画鼻尖的白色圆点
调整画笔粗细到2
落下画笔
画一个半径为4的圆
画笔白色,填充白色(颜色值由取色吸管吸色测量得出)
# 鼻尖 t.penup() t.goto(7, 155) t.pensize(2) t.color('white', 'white') t.pendown() t.begin_fill() t.circle(4) t.end_fill()
抬起画笔
移动至坐标(-30,160)准备画左眼
调整画笔粗细到4
落下画笔
画笔黑色,填充白色(颜色值由取色吸管吸色测量得出)
定义绘制步长变量a,设置初始值为0.4
循环控制总角度120:
当角度等于0-30度或角度等于60-90度时:
每循环一次步长a增加0.08
每循环一次画笔左转3度
每循环一次向前绘制步长变量a
否则:
每循环一次步长a减少0.08
每循环一次画笔左转3度
每循环一次向前绘制步长变量a
# 左眼 t.penup() t.goto(-30, 160) t.pensize(4) t.pendown() t.color('black', 'white') t.begin_fill() a = 0.4 for i in range(120): if 0 <= i < 30 or 60 <= i < 90: a = a + 0.08 t.left(3) # 向左转3度 t.forward(a) # 向前走a的步长 else: a = a - 0.08 t.left(3) t.forward(a) t.end_fill()
抬起画笔
移动至坐标(30,160)准备画右眼
调整画笔粗细到4
落下画笔
画笔黑色,填充白色(颜色值由取色吸管吸色测量得出)
循环控制总角度120:
当角度等于0-30度或角度等于60-90度时:
每循环一次步长a增加0.08
每循环一次画笔左转3度
每循环一次向前绘制步长变量a
否则:
每循环一次步长a减少0.08
每循环一次画笔左转3度
每循环一次向前绘制步长变量a
# 右眼 t.penup() t.goto(30, 160) t.pensize(4) t.pendown() t.color('black', 'white') t.begin_fill() for i in range(120): if 0 <= i < 30 or 60 <= i < 90: a = a + 0.08 t.left(3) # 向左转3度 t.forward(a) # 向前走a的步长 else: a = a - 0.08 t.left(3) t.forward(a) t.end_fill()
抬起画笔
移动至坐标(-38,190)准备画左眼内部
调整画笔粗细到8
落下画笔
右转-30度,绘制步长15的线条
右转70度,绘制步长15的线条
# 左眼内部 t.penup() t.goto(-38, 190) t.pensize(8) t.pendown() t.right(-30) t.forward(15) t.right(70) t.forward(15)
抬起画笔
移动至坐标(15,185)准备画右眼内部黑色眼球
调整画笔粗细到4
落下画笔
画笔黑色,填充黑色(颜色值由取色吸管吸色测量得出)
画一个半径为13的圆
# 右眼内部 t.penup() t.goto(15, 185) t.pensize(4) t.pendown() t.color('black', 'black') t.begin_fill() t.circle(13) t.end_fill()
抬起画笔
移动至坐标(13,190)准备画右眼黑色眼球内部的白色圆点
调整画笔粗细到2
落下画笔
画笔白色,填充白色(颜色值由取色吸管吸色测量得出)
画一个半径为5的圆
# 右眼内部白色圆点 t.penup() t.goto(13, 190) t.pensize(2) t.pendown() t.color('white', 'white') t.begin_fill() t.circle(5) t.end_fill()
抬起画笔
移动至坐标(0,134)并恢复初始状态,准备画鼻子下面的黑色竖线
调整画笔粗细到4
落下画笔
画笔黑色(颜色值由取色吸管吸色测量得出)
右转90度
绘制步长40的线条
# 鼻子下面的黑色竖线 t.penup() t.home() t.goto(0, 134) t.pensize(4) t.pencolor('black') t.pendown() t.right(90) t.forward(40)
抬起画笔
移动至坐标(0,124)并恢复初始状态,准备画右边从上往下数的第1根胡子
调整画笔粗细到3
落下画笔
画笔黑色(颜色值由取色吸管吸色测量得出)
左转10度
绘制步长80的线条
――――――――――――――――――――――――――――――――
抬起画笔
移动至坐标(0,114)并恢复初始状态,准备画右边从上往下数的第2根胡子
调整画笔粗细到3
落下画笔
画笔黑色(颜色值由取色吸管吸色测量得出)
左转6度
绘制步长80的线条
――――――――――――――――――――――――――――――――
抬起画笔
移动至坐标(0,104)并恢复初始状态,准备画右边从上往下数的第3根胡子
调整画笔粗细到3
落下画笔
画笔黑色(颜色值由取色吸管吸色测量得出)
左转0度
绘制步长80的线条
# 右边的胡子(第1根) t.penup() t.home() t.goto(0, 124) t.pensize(3) t.pencolor('black') t.pendown() t.left(10) t.forward(80) # 右边的胡子(第2根) t.penup() t.home() t.goto(0, 114) t.pensize(3) t.pencolor('black') t.pendown() t.left(6) t.forward(80) # 右边的胡子(第3根) t.penup() t.home() t.goto(0, 104) t.pensize(3) t.pencolor('black') t.pendown() t.left(0) t.forward(80)
抬起画笔
移动至坐标(0,124)并恢复初始状态,准备画左边从上往下数的第1根胡子
调整画笔粗细到3
落下画笔
画笔黑色(颜色值由取色吸管吸色测量得出)
左转170度
绘制步长80的线条
――――――――――――――――――――――――――――――――
抬起画笔
移动至坐标(0,114)并恢复初始状态,准备画左边从上往下数的第2根胡子
调整画笔粗细到3
落下画笔
画笔黑色(颜色值由取色吸管吸色测量得出)
左转174度
绘制步长80的线条
――――――――――――――――――――――――――――――――
抬起画笔
移动至坐标(0,104)并恢复初始状态,准备画左边从上往下数的第3根胡子
调整画笔粗细到3
落下画笔
画笔黑色(颜色值由取色吸管吸色测量得出)
左转180度
绘制步长80的线条
# 左边的胡子(第1根) t.penup() t.home() t.goto(0, 124) t.pensize(3) t.pencolor('black') t.pendown() t.left(170) t.forward(80) # 左边的胡子(第2根) t.penup() t.home() t.goto(0, 114) t.pensize(3) t.pencolor('black') t.pendown() t.left(174) t.forward(80) # 左边的胡子(第3根) t.penup() t.home() t.goto(0, 104) t.pensize(3) t.pencolor('black') t.pendown() t.left(180) t.forward(80)
抬起画笔
移动至坐标(-70,70),准备画下边沿圆弧
调整画笔粗细到6
落下画笔
画笔黑色,填充红色(颜色值由取色吸管吸色测量得出)
恢复画笔初始方向并右转60度
绘制半径80,角度40的圆弧
绘制半径80,角度80的圆弧
――――――――――――――――――――――――――――――――
抬起画笔
恢复初始
移动至坐标(-80,70),准备画上边沿横线
落下画笔
绘制步长160的线条
# 嘴巴(下边沿圆弧和颜色填充) t.penup() t.goto(-70, 70) t.pendown() t.color('black', 'red') t.pensize(6) t.setheading(-60) t.begin_fill() t.circle(80, 40) t.circle(80, 80) t.end_fill() # 嘴巴(上边沿的横线) t.penup() t.home() t.goto(-80, 70) t.pendown() t.forward(160)
抬起画笔
恢复初始
移动至坐标(-50,50),准备画舌头
调整画笔粗细到1
落下画笔
画笔黑色,填充土黄色(颜色值由取色吸管吸色测量得出)
恢复画笔初始方向并左转40度
绘制半径-40,角度40的圆弧
绘制半径-40,角度40的圆弧
恢复画笔初始方向并左转40度
绘制半径-40,角度40的圆弧
绘制半径-40,角度40的圆弧
恢复画笔初始方向并左转220度
绘制半径-80,角度40的圆弧
绘制半径-80,角度40的圆弧
# 舌头 t.penup() t.home() t.goto(-50, 50) t.pendown() t.pensize(1) t.fillcolor("#eb6e1a") t.setheading(40) t.begin_fill() t.circle(-40, 40) t.circle(-40, 40) t.setheading(40) t.circle(-40, 40) t.circle(-40, 40) t.setheading(220) t.circle(-80, 40) t.circle(-80, 40) t.end_fill()
抬起画笔
移动至坐标(-70,12),准备画红色围巾
调整画笔粗细到14
落下画笔
画笔红色(颜色值由取色吸管吸色测量得出)
恢复画笔初始方向并右转20度
绘制半径200,角度30的圆弧
绘制半径200,角度10的圆弧
# 领带 t.penup() t.goto(-70, 12) t.pensize(14) t.pencolor('red') t.pendown() t.setheading(-20) t.circle(200, 30) t.circle(200, 10)
抬起画笔
移动至坐标(0,-46),准备画铃铛
调整画笔粗细到3
落下画笔
画笔黑色,填充黄色(颜色值由取色吸管吸色测量得出)
绘制一个半径25的圆
――――――――――――――――――――――――――――――――
抬起画笔
移动至坐标(-5,-40),准备画铃铛细节部分
调整画笔粗细到2
画笔黑色,填充黄绿色(颜色值由取色吸管吸色测量得出)
绘制一个半径5的圆
调整画笔粗细到3
右转115度
绘制步长7的线条
# 铃铛 t.penup() t.goto(0, -46) t.pendown() t.pensize(3) t.color("black", '#f8d102') t.begin_fill() t.circle(25) t.end_fill() # 铃铛细节 t.penup() t.goto(-5, -40) t.pendown() t.pensize(2) t.color("black", '#79675d') t.begin_fill() t.circle(5) t.end_fill() t.pensize(3) t.right(115) t.forward(7)
绘制结束后停留在绘制页面
t.done()
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
python中的return怎么用?对于return的用法其实不难理解,但是在使用时,有一些问题是需要注意的。接下来我们就一起了解看看python中的return,下文有实例供大家参考。
详解Python列表的常用操作及应用是怎样的,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解相关知识有一定的帮助。有这方面学习需要的朋友就继续往下看吧!
说起处理数据就离不开导入导出,而我们使用Pandas时候最常用的就是read_excel、read_csv了,下面这篇文章主要给大家介绍了关于如何利用python在剪贴板上读取/写入数据的相关资料,需要的朋友可以参考下
本篇文章给大家带来了关于Python的相关知识,其中主要介绍了python类参数定义及数据扩展方式unsqueeze/expand,文章通过围绕主题展开详细的内容介绍,下面一起来看一下,希望对大家有帮
这篇文章主要为大家介绍了Python 垃圾回收机制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008