Python-turtle库,画qq表情-斜眼笑

不知道大家最喜欢的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一步一步画表情更是有趣,发现我的文章有问题的大佬,欢迎在下方留言私信。
在这里插入图片描述
技术永无止境!
谢谢支持!

猜你喜欢

转载自blog.csdn.net/pineapple_C/article/details/104881408
今日推荐