这个非常简单,主要用到turtle这个模块,一个绘图函数库,可以快速绘制平面二维图形,下面我简单介绍一下实现过程,主要分为鼻子、眼睛、脸、嘴巴这4个部分,实验环境win10+python3.6+pycharm5.0,主要内容如下:
1.绘制鼻子,这里主要是一个扇形,然后用黑色填充就行,测试代码如下,非常简单:
这个非常简单,主要用到turtle这个模块,一个绘图函数库,可以快速绘制平面二维图形,下面我简单介绍一下实现过程,主要分为鼻子、眼睛、脸、嘴巴这4个部分,实验环境win10+python3.6+pycharm5.0,主要内容如下:
1.绘制鼻子,这里主要是一个扇形,然后用黑色填充就行,测试代码如下,非常简单:

2.绘制眼睛,这里主要是绘制1个大的圆形,用黑色填充,然后再绘制1个小的圆形,用白色填充,测试代码如下:

3.绘制脸,这里主要是绘制一个大的圆形,然后用红色填充就行,测试代码如下,非常简单:

4.绘制嘴巴,这里的代码比较麻烦,就是一些弧线组合,然后填充色为暗红色,测试代码如下:


5.最后就是调用上面的各个部分绘制函数,设置背景色为黄色,眼睛和脸需要调用两次,如下:

运行这个程序,截图如下,就是一个可爱的皮卡丘脸:

至此,我们就完成了利用python的turtle库绘制一个可爱的皮卡丘。总的来说,整个过程不难,但是需要一定的绘图基础,同时也需要对turtle库比较熟悉,常见的绘图函数都需要熟练掌握才行,如果你没有任何基础的话,建议还是先熟悉一下turtle库的使用,再熟悉一下上面的代码,多调试几遍程序,很快就会掌握的。
代码里有不懂的可以参考这个turtle文档~这里只介绍一下用到的:
seth:设置朝向;
fd:前进;
circle:画圆;
fillcolor:填充颜色;
pensize:画笔粗细;
speed:速度;
hideturtle:隐藏海龟;
screensize:设置屏幕大小;
begin_fill:开始填充;
end_fill:结束填充;
penup:画笔抬起;
pendown:画笔落下(此时移动将画线)。
完整源码如下:
- import turtle
-
- # 画鼻子
-
- def drawNose():
-
- turtle.penup()
-
- turtle.seth(90)
-
- turtle.fd(100)
-
- turtle.pendown()
-
- turtle.begin_fill()
-
- turtle.fillcolor('black')
-
- turtle.seth(45)
-
- turtle.fd(25)
-
- turtle.seth(135)
-
- turtle.circle(25, 95)
-
- turtle.seth(315)
-
- turtle.fd(25)
-
- turtle.end_fill()
-
- # 画眼睛
-
- def drawEyes(seth, fd, r):
-
- turtle.penup()
-
- turtle.seth(seth)
-
- turtle.fd(fd)
-
- turtle.pendown()
-
- turtle.begin_fill()
-
- turtle.fillcolor('black')
-
- turtle.circle(50)
-
- turtle.end_fill()
-
- turtle.penup()
-
- turtle.circle(50, r)
-
- turtle.pendown()
-
- turtle.begin_fill()
-
- turtle.fillcolor('white')
-
- turtle.circle(20)
-
- turtle.end_fill()
-
- # 画脸
-
- def drawFace(seth, fd):
-
- turtle.penup()
-
- turtle.seth(seth)
-
- turtle.fd(fd)
-
- turtle.pendown()
-
- turtle.begin_fill()
-
- turtle.fillcolor('red')
-
- turtle.circle(70)
-
- turtle.end_fill()
-
- # 画嘴巴
-
- def drawLip():
-
- turtle.penup()
-
- turtle.seth(135)
-
- turtle.fd(250)
-
- turtle.pendown()
-
- turtle.seth(-300)
-
- turtle.circle(30, -65)
-
- turtle.begin_fill()
-
- turtle.fillcolor('Firebrick')
-
- turtle.seth(165)
-
- turtle.fd(140)
-
- turtle.seth(195)
-
- turtle.fd(140)
-
- turtle.seth(-360)
-
- turtle.circle(30, -65)
-
- turtle.penup()
-
- turtle.seth(-60)
-
- turtle.circle(30, 65)
-
- turtle.pendown()
-
- turtle.seth(-70)
-
- turtle.fd(240)
-
- turtle.circle(55, 140)
-
- turtle.seth(70)
-
- turtle.fd(240)
-
- turtle.end_fill()
-
- turtle.seth(-110)
-
- turtle.fd(80)
-
- turtle.begin_fill()
-
- turtle.fillcolor('Firebrick')
-
- turtle.seth(120)
-
- turtle.circle(120, 123)
-
- turtle.seth(-70)
-
- turtle.fd(165)
-
- turtle.circle(55, 140)
-
- turtle.seth(72)
-
- turtle.fd(165)
-
- turtle.end_fill()
-
- # 主函数
-
- def main():
-
- turtle.pensize(4)
-
- turtle.hideturtle()
-
- turtle.setup(1000, 600)
-
- turtle.speed(10)
-
- turtle.screensize(bg='yellow')
-
- drawNose()
-
- drawEyes(160, 250, 60)
-
- drawEyes(-9.5, 530, 230)
-
- drawFace(195, 600)
-
- drawFace(-11, 720)
-
- drawLip()
-
- turtle.done()
-
- if __name__ == '__main__':
-
- main()