趣味Python|【Python入门练手小项目】画一个蓝胖子??
哆啦A梦图形绘制
工具使用
开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:turtle
项目思路解析
- 分模块画出蓝胖子
- 画头
- 画红领巾
- 画脸、鼻子、胡须
turtle.screensize(800, 600, "#F0F0F0")
turtle.pensize(3)
turtle.speed(20)
用screensize设置的是画布大小及背景色,窗体和画布不是一个概念 如果画布大于窗体,窗体会出现滚动条,如果画布小于窗体,画布会填充整个窗体。
文章图片
【趣味Python|【Python入门练手小项目】画一个蓝胖子??】先给蓝胖子画出头部
画了一个被切掉下半部分的圆
""" 画了一个被切掉下半部分的圆
"""
turtle.penup()# 抬笔
turtle.circle(150, 40)# 画圆, 半径150,圆周角40
turtle.pendown()# 落笔
turtle.fillcolor("#00a0de")# 填充色
turtle.begin_fill()# 开始填充
turtle.circle(150, 280)# 画圆,半径150, 圆周角280
turtle.end_fill()
文章图片
画出蓝胖子的红色围巾 在切圆下方
def drawRedScarf():
""" 画围巾
"""
turtle.fillcolor("red")# 填充颜色
turtle.begin_fill()
turtle.seth(0)# 朝向右
?
turtle.fd(200)# 前进10个单位
turtle.circle(-5, 90)
?
turtle.fd(10)
turtle.circle(-5, 90)
?
turtle.fd(207)
turtle.circle(-5, 90)
?
turtle.fd(10)
turtle.circle(-5, 90)
?
turtle.end_fill()
?
文章图片
添加蓝胖子的红鼻子 绘制脸部数据
"""
"""
turtle.forward(183)# 前行183个单位
turtle.fillcolor("white")# 填充颜色为白色
turtle.begin_fill()# 开始填充
turtle.left(45)# 左转45度
turtle.circle(120, 100)# 右边那半边脸
turtle.seth(90)# 朝向向上
drawEye()# 画右眼睛
turtle.seth(180)# 朝向左
turtle.penup()# 抬笔
turtle.fd(60)# 前行60
turtle.pendown()# 落笔
turtle.seth(90)# 朝向上
drawEye()# 画左眼睛
turtle.penup()# 抬笔
turtle.seth(180)# 朝向左
turtle.fd(64)# 前进64
turtle.pendown()# 落笔
turtle.seth(215)# 修改朝向
turtle.circle(120, 100)# 左边那半边脸
turtle.end_fill()#def drawRedNose():
flyTo(-10, 158)
turtle.fillcolor("red")# 填充颜色
turtle.begin_fill()
turtle.circle(20)
turtle.end_fill()
文章图片
加上代表性的猫胡子
flyTo(5, 148)
turtle.seth(270)
turtle.fd(100)
turtle.seth(0)
turtle.circle(120, 50)
turtle.seth(230)
turtle.circle(-120, 100)
def beard():
""" 画胡子, 一共六根
"""
# 左边第一根胡子
flyTo(-37, 135)
turtle.seth(165)
turtle.fd(60)# 左边第二根胡子
flyTo(-37, 125)
turtle.seth(180)
turtle.fd(60)# 左边第三根胡子
flyTo(-37, 115)
turtle.seth(193)
turtle.fd(60)# 右边第一根胡子
flyTo(37, 135)
turtle.seth(15)
turtle.fd(60)# 右边第二根胡子
flyTo(37, 125)
turtle.seth(0)
turtle.fd(60)# 右边第三根胡子
flyTo(37, 115)
turtle.seth(-13)
turtle.fd(60)
文章图片
添加蓝胖子的身体轮廓 加上两只可爱的小手手
文章图片
flyTo(0, 0)
turtle.seth(0)
turtle.penup()
turtle.circle(150, 50)
turtle.pendown()
turtle.seth(30)
turtle.fd(40)
turtle.seth(70)
turtle.circle(-30, 270)
turtle.fillcolor("#00a0de")
turtle.begin_fill()
turtle.seth(230)
turtle.fd(80)
turtle.seth(90)
turtle.circle(1000, 1)
turtle.seth(-89)
turtle.circle(-1000, 10)
turtle.seth(180)
turtle.fd(70)
turtle.seth(90)
turtle.circle(30, 180)
turtle.seth(180)
turtle.fd(70)
turtle.seth(100)
turtle.circle(-1000, 9)
turtle.seth(-86)
turtle.circle(1000, 2)
turtle.seth(230)
turtle.fd(40)
turtle.circle(-30, 230)
turtle.seth(45)
turtle.fd(81)
turtle.seth(0)
turtle.fd(203)
turtle.circle(5, 90)
turtle.fd(10)
turtle.circle(5, 90)
turtle.fd(7)
turtle.seth(40)
turtle.circle(150, 10)
turtle.seth(30)
turtle.fd(40)
turtle.end_fill()
?
精修蓝胖子的四肢 添加蓝胖子的鞋
# 左手
turtle.seth(70)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.circle(-30)
turtle.end_fill()
?
# 脚
flyTo(103.74, -182.59)
turtle.seth(0)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.fd(15)
turtle.circle(-15, 180)
turtle.fd(90)
turtle.circle(-15, 180)
turtle.fd(10)
turtle.end_fill()
flyTo(-96.26, -182.59)
turtle.seth(180)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.fd(15)
turtle.circle(15, 180)
turtle.fd(90)
turtle.circle(15, 180)
turtle.fd(10)
turtle.end_fill()
?
# 右手
flyTo(-133.97, -91.81)
turtle.seth(50)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.circle(30)
turtle.end_fill()
?
放置蓝胖子的神奇口袋 加上蓝胖子的铃铛 添加上感人的眼神
# 口袋
flyTo(-103.42, 15.09)
turtle.seth(0)
turtle.fd(38)
turtle.seth(230)
turtle.begin_fill()
turtle.circle(90, 260)
turtle.end_fill()
flyTo(5, -40)
turtle.seth(0)
turtle.fd(70)
turtle.seth(-90)
turtle.circle(-70, 180)
turtle.seth(0)
turtle.fd(70)
?
# 铃铛
flyTo(-103.42, 15.09)
turtle.fd(90)
turtle.seth(70)
turtle.fillcolor("#ffd200")
turtle.begin_fill()
turtle.circle(-20)
turtle.end_fill()
turtle.seth(170)
turtle.fillcolor("#ffd200")
turtle.begin_fill()
turtle.circle(-2, 180)
turtle.seth(10)
turtle.circle(-100, 22)
turtle.circle(-2, 180)
turtle.seth(180 - 10)
turtle.circle(100, 22)
turtle.end_fill()
flyTo(-13.42, 15.09)
turtle.seth(250)
turtle.circle(20, 110)
turtle.seth(90)
turtle.fd(15)
turtle.dot(10)
flyTo(0, -150)
drawBlackdrawEye()
?
?
文章图片
绘制完成
简易源码分享
import turtledef flyTo(x, y):
turtle.penup()
turtle.goto(x, y)
turtle.pendown()def drawEye():
turtle.tracer(False)
a = 2.5
for i in range(120):
turtle.left(3)
if 0 <= i < 30 or 60 <= i < 90:
a -= 0.05
else:
a += 0.05
turtle.fd(a)
turtle.tracer(True)def beard():
""" 画胡子, 一共六根
"""
# 左边第一根胡子
flyTo(-37, 135)
turtle.seth(165)
turtle.fd(60)# 左边第二根胡子
flyTo(-37, 125)
turtle.seth(180)
turtle.fd(60)# 左边第三根胡子
flyTo(-37, 115)
turtle.seth(193)
turtle.fd(60)# 右边第一根胡子
flyTo(37, 135)
turtle.seth(15)
turtle.fd(60)# 右边第二根胡子
flyTo(37, 125)
turtle.seth(0)
turtle.fd(60)# 右边第三根胡子
flyTo(37, 115)
turtle.seth(-13)
turtle.fd(60)def drawRedScarf():
""" 画围巾
"""
turtle.fillcolor("red")# 填充颜色
turtle.begin_fill()
turtle.seth(0)# 朝向右turtle.fd(200)# 前进10个单位
turtle.circle(-5, 90)turtle.fd(10)
turtle.circle(-5, 90)turtle.fd(207)
turtle.circle(-5, 90)turtle.fd(10)
turtle.circle(-5, 90)turtle.end_fill()def drawMouse():
flyTo(5, 148)
turtle.seth(270)
turtle.fd(100)
turtle.seth(0)
turtle.circle(120, 50)
turtle.seth(230)
turtle.circle(-120, 100)def drawRedNose():
flyTo(-10, 158)
turtle.fillcolor("red")# 填充颜色
turtle.begin_fill()
turtle.circle(20)
turtle.end_fill()def drawBlackdrawEye():
turtle.seth(0)
flyTo(-20, 195)
turtle.fillcolor("#000000")# 填充颜色
turtle.begin_fill()
turtle.circle(13)
turtle.end_fill()
turtle.pensize(6)
flyTo(20, 205)
turtle.seth(75)
turtle.circle(-10, 150)
turtle.pensize(3)
flyTo(-17, 200)
turtle.seth(0)
turtle.fillcolor("#ffffff")
turtle.begin_fill()
turtle.circle(5)
turtle.end_fill()
flyTo(0, 0)def drawFace():
"""
"""
turtle.forward(183)# 前行183个单位
turtle.fillcolor("white")# 填充颜色为白色
turtle.begin_fill()# 开始填充
turtle.left(45)# 左转45度
turtle.circle(120, 100)# 右边那半边脸
turtle.seth(90)# 朝向向上
drawEye()# 画右眼睛
turtle.seth(180)# 朝向左
turtle.penup()# 抬笔
turtle.fd(60)# 前行60
turtle.pendown()# 落笔
turtle.seth(90)# 朝向上
drawEye()# 画左眼睛
turtle.penup()# 抬笔
turtle.seth(180)# 朝向左
turtle.fd(64)# 前进64
turtle.pendown()# 落笔
turtle.seth(215)# 修改朝向
turtle.circle(120, 100)# 左边那半边脸
turtle.end_fill()#def drawHead():
""" 画了一个被切掉下半部分的圆
"""
turtle.penup()# 抬笔
turtle.circle(150, 40)# 画圆, 半径150,圆周角40
turtle.pendown()# 落笔
turtle.fillcolor("#00a0de")# 填充色
turtle.begin_fill()# 开始填充
turtle.circle(150, 280)# 画圆,半径150, 圆周角280
turtle.end_fill()def drawAll():
drawHead()
drawRedScarf()
drawFace()
drawRedNose()
drawMouse()
beard()
flyTo(0, 0)
turtle.seth(0)
turtle.penup()
turtle.circle(150, 50)
turtle.pendown()
turtle.seth(30)
turtle.fd(40)
turtle.seth(70)
turtle.circle(-30, 270)
turtle.fillcolor("#00a0de")
turtle.begin_fill()
turtle.seth(230)
turtle.fd(80)
turtle.seth(90)
turtle.circle(1000, 1)
turtle.seth(-89)
turtle.circle(-1000, 10)
turtle.seth(180)
turtle.fd(70)
turtle.seth(90)
turtle.circle(30, 180)
turtle.seth(180)
turtle.fd(70)
turtle.seth(100)
turtle.circle(-1000, 9)
turtle.seth(-86)
turtle.circle(1000, 2)
turtle.seth(230)
turtle.fd(40)
turtle.circle(-30, 230)
turtle.seth(45)
turtle.fd(81)
turtle.seth(0)
turtle.fd(203)
turtle.circle(5, 90)
turtle.fd(10)
turtle.circle(5, 90)
turtle.fd(7)
turtle.seth(40)
turtle.circle(150, 10)
turtle.seth(30)
turtle.fd(40)
turtle.end_fill()# 左手
turtle.seth(70)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.circle(-30)
turtle.end_fill()# 脚
flyTo(103.74, -182.59)
turtle.seth(0)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.fd(15)
turtle.circle(-15, 180)
turtle.fd(90)
turtle.circle(-15, 180)
turtle.fd(10)
turtle.end_fill()
flyTo(-96.26, -182.59)
turtle.seth(180)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.fd(15)
turtle.circle(15, 180)
turtle.fd(90)
turtle.circle(15, 180)
turtle.fd(10)
turtle.end_fill()# 右手
flyTo(-133.97, -91.81)
turtle.seth(50)
turtle.fillcolor("#FFFFFF")
turtle.begin_fill()
turtle.circle(30)
turtle.end_fill()# 口袋
flyTo(-103.42, 15.09)
turtle.seth(0)
turtle.fd(38)
turtle.seth(230)
turtle.begin_fill()
turtle.circle(90, 260)
turtle.end_fill()
flyTo(5, -40)
turtle.seth(0)
turtle.fd(70)
turtle.seth(-90)
turtle.circle(-70, 180)
turtle.seth(0)
turtle.fd(70)# 铃铛
flyTo(-103.42, 15.09)
turtle.fd(90)
turtle.seth(70)
turtle.fillcolor("#ffd200")
turtle.begin_fill()
turtle.circle(-20)
turtle.end_fill()
turtle.seth(170)
turtle.fillcolor("#ffd200")
turtle.begin_fill()
turtle.circle(-2, 180)
turtle.seth(10)
turtle.circle(-100, 22)
turtle.circle(-2, 180)
turtle.seth(180 - 10)
turtle.circle(100, 22)
turtle.end_fill()
flyTo(-13.42, 15.09)
turtle.seth(250)
turtle.circle(20, 110)
turtle.seth(90)
turtle.fd(15)
turtle.dot(10)
flyTo(0, -150)
drawBlackdrawEye()def main():
turtle.screensize(800, 600, "#F0F0F0")
turtle.pensize(3)
turtle.Screen().title('哆啦A梦')
turtle.speed(15)
drawAll()if __name__ == "__main__":
main()
turtle.mainloop()
文章图片
我是白又白i,一名喜欢分享知识的程序媛??
如果没有接触过编程这块的朋友看到这篇博客,发现不会的或者想要学习Python的,可以直接留言或者私我【非常感谢你的点赞、收藏、关注、评论,一键四连支持】
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长