Python Turtle绘图 鼠年画老鼠爷
前言效果图必要知识源代码后记前言
本文介绍的是如何运用Python的turtle画一只老鼠。为什么会无聊想到做这个呢?还不是想获得24小时的请假时长学会turtle,掌握技术。
这是我们系举办的一个“对称图形编程大赛活动”,此次做这个初期也只是为了参赛,但做一件事情都要把它做好嘛,所以花费了一些时间和精力。
由于近期在自学Python,觉得turtle挺有意思的,刚好今年是鼠年,就想到用turtle画只老鼠。
由于本人画画功底渣+刚入门的小白,所以画出来的老鼠略微丑萌,与实际参考图有一定差距,但是没关系,自己女朋友看着开心就行!
在画之前,先参考了画小猪佩奇的方法,有了初步的理解和认识。网上有很多优秀的作品也可供大家参考。
通过这项活动我浅学会了Python Turtle这个神奇又强大的工具,操作起来真的就跟画笔没两样,牛批!
代码不难,难得是要找角度,不过这玩意还是很好入门的。博主愚钝,在女朋友十万分的鼓励和不断提出修改建议的情况下,敲了好久才有这只小老鼠。
所以哈,大家会儿借鉴的时候,稍微,就稍微啊,标一下出处。感恩啊!
效果图
下面先来看一下效果图吧,丑萌丑萌的,勿喷(开心就好)。
必要知识
要想画出老鼠,必须掌握以下知识,也是一些turtle的基本操作,下面我对知识点做了一些说明,便于大家读懂。
源代码
大家心心念念的源代码来了,感兴趣的小伙伴可以自行下载运行,编程中的快乐“鼠”于你!
我在代码中标明了注释,大家可以根据注释来理解代码的含义。
"""作品名称:运鼠帷幄前言:以下内容都是作者一点点测试出来的,如需转载,请附明源出处!"""import turtle as tt.screensize(300,600)def ears(dir): # 耳朵,dir用来设置方向,左右耳对称#大圈t.pu()t.goto((0 - dir) * 150, 120)t.setheading(0)t.pd()t.fillcolor('#F2D391')t.begin_fill()t.circle(80)t.end_fill()#小圈t.pu()t.goto((0 - dir) * 120, 120)t.setheading(0)t.pd()t.fillcolor('#F9ECF5')t.begin_fill()t.circle(60)t.end_fill()def face(): # 画脸#加底图t.pu()t.goto(-45,216)t.pd()t.color("#FFE4B5","#FFE4B5")#前一个是笔的颜色,后一个是填充的颜色t.begin_fill()t.goto(45,216)t.goto(65, -20)t.goto(-65, -20)t.end_fill()t.color("black","#FFE4B5")#底图增加完毕,笔的颜色置回黑色#右边脸颊t.pu()t.goto(65,-20)t.pd()t.fillcolor('#FFE4B5')t.begin_fill()t.setheading(10)t.circle(120,180)#左边脸颊t.pu()t.goto(-65,-20)t.pd()t.setheading(170)t.circle(-120,180)#下巴t.pu()t.goto(-65,-20)t.pd()t.goto(65,-20)t.end_fill()def mouth(): # 嘴巴#右边嘴巴t.pu()t.goto(0, 30)t.pd()t.setheading(-70)t.circle(30,180)#左边嘴巴t.pu()t.goto(0, 30)t.pd()t.setheading(-110)t.circle(-30,180)def eyes(dir): # 画眼睛,dir用来设置方向,左右眼对称#大圈t.pu()t.goto((0 - dir) * 30, 140)t.setheading(90)t.pd()t.fillcolor('white')t.begin_fill()t.circle(dir * 30)t.end_fill()#小圈t.pu()t.goto((0 - dir) * 40, 135)t.setheading(90)t.pd()t.fillcolor('#AAC9E3')t.begin_fill()t.circle(dir * 17)t.end_fill()#小小圈t.pu()t.goto((0 - dir) * 45, 135)t.setheading(90)t.pd()t.color("white","white")t.begin_fill()t.circle(dir * 5)t.end_fill()t.color("black","white")def nose(): # 画鼻子t.pu()t.goto(14, 80)t.setheading(90)t.pd()t.fillcolor('red')t.begin_fill()t.circle(14)t.end_fill()def beard(): #画胡须#右边胡须t.pu()t.goto(90, 80)t.pd()t.setheading(-15)t.fd(150)t.pu()t.goto(90, 60)t.pd()t.setheading(-30)t.fd(150)#左边胡须t.pu()t.goto(-90, 80)t.pd()t.setheading(-165)t.fd(150)t.pu()t.goto(-90, 60)t.pd()t.setheading(-150)t.fd(150)def hat(): #帽子#小的半圆t.pu()t.goto(50, 265)t.pd()t.setheading(90)t.fillcolor('red')t.begin_fill()t.circle(50,180)t.end_fill()#大的半圆t.fillcolor('red')t.begin_fill()t.pu()t.setheading(0)t.goto(-80, 210)t.pd()t.fd(160)t.setheading(90)t.circle(80,180)t.end_fill()#铜钱大圆t.fillcolor('yellow')t.begin_fill()t.pu()t.goto(0, 220)t.setheading(0)t.pd()t.circle(30)t.end_fill()#铜钱小方块t.fillcolor('red')t.begin_fill()t.pu()t.goto(-15, 235)t.setheading(0)t.pd()t.fd(30)t.lt(90)t.fd(30)t.lt(90)t.fd(30)t.lt(90)t.fd(30)t.end_fill()def clothes(): #衣服#下边衣角t.pu()t.goto(-120,-168)t.pd()t.setheading(-90)t.fillcolor('red')t.begin_fill()t.fd(40)t.lt(90)t.fd(240)t.lt(90)t.fd(40)t.end_fill()#加底图t.color("red","red")##+42t.pu()t.goto(-110, -3)t.pd()t.begin_fill()t.goto(-110, -188)t.goto(110, -188)t.goto(110, -3)t.end_fill()t.color("black","red")#左边袖子t.pu()t.goto(-110, -3)t.pd()t.setheading(-150)t.begin_fill()t.circle(100,160)t.setheading(90)t.fd(100)t.lt(60)t.fd(70)t.end_fill()#右边袖子t.pu()t.goto(110, -3)t.pd()t.setheading(-30)t.begin_fill()t.circle(-100,160)t.setheading(90)t.fd(100)t.rt(60)t.fd(70)t.end_fill()#中间条纹t.pu()t.goto(-20, -8)t.pd()t.fillcolor('yellow')t.begin_fill()t.setheading(-90)t.fd(200)t.lt(90)t.fd(40)t.lt(90)t.fd(200)t.lt(90)t.fd(40)t.end_fill()#袖口条纹t.pu()t.goto(-43, -188)t.pd()t.setheading(90)t.begin_fill()t.fd(100)t.lt(60)t.fd(40)t.setheading(-90)t.fd(120)t.end_fill()t.pu()t.goto(43, -188)t.pd()t.setheading(90)t.begin_fill()t.fd(100)t.rt(60)t.fd(40)t.setheading(-90)t.fd(120)t.end_fill()def hand(): #手#左手t.pu()t.goto(-43, -168)t.pd()t.setheading(0)t.fillcolor('#FFE4B5')t.begin_fill()t.circle(40,180)t.end_fill()#左手手指条纹t.pu()t.goto(-5, -118)t.pd()t.fd(28)t.pu()t.goto(-3, -128)t.pd()t.fd(30)t.pu()t.goto(-5, -138)t.pd()t.fd(28)#右手t.pu()t.goto(43, -88)t.pd()t.setheading(180)t.begin_fill()t.circle(40,180)t.end_fill()#右手手指条纹t.pu()t.goto(5, -118)t.pd()t.fd(28)t.pu()t.goto(3, -128)t.pd()t.fd(30)t.pu()t.goto(5, -138)t.pd()t.fd(28)def trousers(): #裤子#左边裤子t.pu()t.goto(-110,-208)t.pd()t.setheading(-100)t.fillcolor('red')t.begin_fill()t.fd(100)t.setheading(0)t.fd(90)t.goto(0,-208)#右边裤子t.pu()t.goto(110,-208)t.pd()t.setheading(-80)t.fd(100)t.setheading(180)t.fd(90)t.goto(0,-208)t.end_fill()def shoes(): #鞋子#左边鞋子t.pu()t.goto(-125,-307)t.pd()t.setheading(-90)t.fillcolor('yellow')t.begin_fill()t.circle(40,180)t.end_fill()#左边鞋子条纹t.pu()t.goto(-85,-347)t.pd()t.setheading(90)t.fd(30)#右边鞋子t.pu()t.goto(125,-307)t.pd()t.setheading(-90)t.begin_fill()t.circle(-40,180)t.end_fill()#右边鞋子条纹t.pu()t.goto(85,-347)t.pd()t.setheading(90)t.fd(30)def Originator(): #就系我啦t.pu()t.goto(0,-350)t.pd()t.write("作者:二君爱读书", move=False, align="center", font=("Arial", 10, "normal"))t.pu()t.goto(0,-360)t.pd()t.setheading(90)t.pensize(2)clothes()hand()trousers()shoes()ears(1)ears(-1)face()mouth()eyes(1)eyes(-1)nose()beard()hat()Originator()t.done()
后记
初稿只画了老鼠头,觉得画得不像,害怕大家认不出来,但询问身边的好友,大家都猜出来了哈哈出乎意料!
敲了好久才有这只小老鼠。女朋友说长得特别像老鼠爷,哈哈哈也算不负她望,圆满了!希望自己能获个小奖哈,到时候向大家公布!
本人是新手小白。有不足的地方欢迎各位大佬指正,大家共同交流学习。在春节之际,祝愿大家year year no bug!
作者:二君爱读书
日期:1月21日