不知道大家最喜欢的QQ表情是什么。
我最喜欢的QQ表情是这个,哈哈哈
很有意思吧,其实用Python一步一步画出来更有意思。
步骤有四个,1.画脸;2.画嘴巴;3.画眼睛;4.准备实现
1.画脸
这个比较简单,其实就是画一个圆,然后用金黄色填充,唯一要注意的一点,就是画笔的其实位置,因为要画一个稍大的圆,所以画笔要放在屏幕的下边。
#画脸
def DrawFace():
pu()
seth(-90)
fd(380)
pd()
seth(0)
begin_fill()
fillcolor("gold")
circle(380)
end_fill()
2.画嘴
嘴巴是一个弧形,只要掌握好画笔的位置和角度,多试几次就能够确定下来,要注意的是嘴巴要比脸部的颜色深一点,这里我把它调成橘黄色。
#画嘴巴
def DrawLip():
pu()
seth(90)
fd(350)
seth(180)
fd(335)
seth(-85)
pd()
pencolor("orange")
circle(330, 170)
3.画眼睛
这个就是难点了,因为要画弓形,还要计算画笔的具体位置。
这个就涉及到一些个数学知识了,于是我们一起回到初中的数学看一看。
图中橘黄色的弓形就是个例子
在设置海龟的方向为-180°的前提下
设弧度=∠ABC=∠α
海龟倾斜度=∠GCF=∠β
∠DCB+∠BDC
=180°-∠CBD
=180°-1/2∠α
又∠ACB=∠DCB+∠BDC=∠GCF=∠β
所以得出了一个结论:∠β=180°-1/2∠α
用文字描述就是,如果想要画一个平行于x轴的弓形,必须满足:
海龟的倾斜度=180°-弓形弧度的一半!!!
为了方便计算,我把海龟倾斜度数调成120°,这样的话,弓形弧度也是120°。145°算起来也很好算,但是它太扁了,如果要调一调的话,眼睛就太大了,所以这里不用。
# 画眼睛
def DrawEyse():
pu()
goto(-20, 50)
seth(120) # 设置海龟的倾斜度数
pd()
begin_fill()
fillcolor("white")
circle(200, 120) # 设置要画弓形的半径与弓形的弧度
seth(0)
fd(200*sqrt(3))
end_fill()
pu()
goto(20+200*sqrt(3), 50)
seth(120)
pd()
begin_fill()
fillcolor("white")
circle(200, 120)
seth(0)
fd(200*sqrt(3))
end_fill()
pu()
goto(-300, 50)
pd()
pencolor("black")
begin_fill()
fillcolor("black")
circle(30)
pu()
goto(85, 50)
pd()
circle(30)
end_fill()
准备实现
def ReStrat():
setup(1000, 800)
pensize(5)
pencolor("gold")
DrawFace()
DrawLip()
DrawEyse()
done()
ReStrat()
完整代码如下
from turtle import *
from math import *
# 画脸
def DrawFace():
pu()
seth(-90)
fd(380)
pd()
seth(0)
begin_fill()
fillcolor("gold")
circle(380)
end_fill()
# 画嘴巴
def DrawLip():
pu()
seth(90)
fd(350)
seth(180)
fd(335)
seth(-85)
pd()
pencolor("orange")
circle(330, 170)
# 画眼睛
def DrawEyse():
pu()
goto(-20, 50)
seth(120) # 设置海龟的倾斜度数
pd()
begin_fill()
fillcolor("white")
circle(200, 120) # 设置要画弓形的半径与弓形的度数
seth(0)
fd(200*sqrt(3))
end_fill()
pu()
goto(20+200*sqrt(3), 50)
seth(120)
pd()
begin_fill()
fillcolor("white")
circle(200, 120)
seth(0)
fd(200*sqrt(3))
end_fill()
pu()
goto(-300, 50)
pd()
pencolor("black")
begin_fill()
fillcolor("black")
circle(30)
pu()
goto(85, 50)
pd()
circle(30)
end_fill()
def ReStrat():
setup(1000, 800)
pensize(5)
pencolor("gold")
DrawFace()
DrawLip()
DrawEyse()
done()
ReStrat()
总结
QQ里有趣的表情真不少,我们每天都会发各种表情,这次用python一步一步画表情更是有趣,发现我的文章有问题的大佬,欢迎在下方留言私信。
技术永无止境!
谢谢支持!