用 Python 画一个奸笑(滑稽)表情

时间:2022-07-23
本文章向大家介绍用 Python 画一个奸笑(滑稽)表情,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

微信自带的表情大家应该都用过,其中奸笑(其他的平台也有叫滑稽的)的表情使用率算是比较高的,对于这个表情,有的人喜欢,也有的人不喜欢,这个都是正常的,我们不讨论这个。

大家应该都知道 Python 的 turtle 库可以画画,本文我们就使用这个库画一个奸笑表情。

由于微信上的表情尺寸较小,看起来不方便,我从网上找了一个大一点的,如下所示:

我们可以看出这个表情的组成部分包括:脸框(就是那个大圆圈)、眼眉、眼眶、眼珠、红腮、嘴,下面我们开始画这几部分。

首先我们画脸框,代码实现如下所示:

penup()
goto(-210,0)
seth(-90)
pendown()
pencolor('#FFCC33')
pensize(4)
begin_fill()
circle(210,360)
fillcolor('#FFFF99')
end_fill()
pencolor('#330033')

看一下效果:

接着眉毛,代码实现如下:

# 左眉毛
penup()
pensize(4)
goto(-180,140)
pencolor('#585858')
pendown()
seth(70)
circle(-60,140)
# 右眉毛
penup()
pensize(4)
goto(180,140)
pencolor('#585858')
pendown()
seth(110)
circle(60,140)

看一下效果:

再接着画眼眶和眼珠,代码实现如下:

# 左眼眶
penup()
pensize(4)
goto(-180,90)
pencolor('#909090')
pendown()
seth(40)
begin_fill()
circle(-120,80)
penup()
goto(-180,90)
seth(-130)
pendown()
circle(15,110)
seth(40)
circle(-106,83)
seth(30)
circle(18,105)
fillcolor('white')
end_fill()
# 右眼眶
penup()
goto(20,90)
pendown()
seth(40)
begin_fill()
circle(-120,80)
penup()
goto(20,90)
pendown()
seth(-130)
circle(15,110)
seth(40)
circle(-106,83)
seth(30)
circle(18,105)
fillcolor('white')
end_fill()
# 眼珠
pensize(2)
penup()
goto(30,83)
pendown()
begin_fill()
circle(8,360)
fillcolor('black')
end_fill()
penup()
goto(-170,83)
pendown()
begin_fill()
circle(8,360)
fillcolor('black')
end_fill()

看一下效果:

再接着画红腮,代码实现如下:

pensize(1)
pencolor('LightSalmon')
begin_fill()
penup()
goto(-160,50)
pendown()
seth(-90)
for i in range(2):
    for j in range(10):
        forward(j)
        left(9)
    for j in range(10,0,-1):
        forward(j)
        left(9)
fillcolor('LightSalmon')
end_fill()
pensize(1)
pencolor('LightSalmon')
begin_fill()
penup()
goto(40,50)
pendown()
seth(-90)
for i in range(2):
    for j in range(10):
        forward(j)
        left(9)
    for j in range(10,0,-1):
        forward(j)
        left(9)
fillcolor('LightSalmon')
end_fill()
hideturtle()

看一下效果:

最后我们画嘴,代码实现如下:

pensize(5)
penup()
goto(-150,-30)
pencolor('#585858')
pendown()
seth(-90)
circle(150,180)

看一下最终效果:

是不是有内味了。