本文利用 Python 绘制两个卡通角色,并带大家熟悉一下绘图程序包 turtle 的一些用法,先看一下 最终皮卡丘的绘制效果录制_2020_08_01_22_15_39_710.gif

在使用之前请确保 turtle 已经安装成功,第一次安装 turtle 时,用的是 pip 安装包,但总会出现下面的错误,

经查阅资料找到了一种可行的解决方法:

except ValueError, ve:

改为

except (ValueError, ve):3, 使用 pip 命令对本地下载文件进行安装

pip install C:\Users\XXX\Desktop\turtle-0.0.2

2, turtle 命令介绍

turtle 绘图时有个特点,代码行数看起来比较大,但用到的也就是命令操作,来回使用;这里我提前把 turtle 几个常用的命令罗列出来,并在旁边简单介绍一下其用法,方便大家的学习:ble data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">

Func(函数)Para type(参数类型)Desc(描述)

Func(函数)Para type(参数类型)Desc(描述)

Func(函数)Para type(参数类型)Desc(描述)

Func(函数)Para type(参数类型)Desc(描述)

Func(函数)Para type(参数类型)Desc(描述)

Func(函数)Para type(参数类型)Desc(描述)

Func(函数)Para type(参数类型)Desc(描述)

Func(函数)Para type(参数类型)Desc(描述)

注 : func 中换行表示或的意思,每种函数名有它的缩写,所以存在函数 有2-3 种 不同写法,但函数功能是一样的, - 表示无参数;

3,绘制皮卡丘

代码部分

'''

绘制皮卡丘

'''

import turtle

def getPosition(x,y):

turtle.setx(x)

turtle.sety(y)

print(x,y)

class Pikachu:

def __init__(self):

self.t = turtle.Turtle()

t = self.t

t.pensize(3) # 画笔大小

t.speed(9) #画笔速度

t.ondrag(getPosition)

def onTrace_goto(self,x,y):

self.t.penup()

self.t.goto(x,y)

self.t.pendown()

def leftEye(self,x,y):

self.onTrace_goto(x,y)

t = self.t

t.seth(0)

t.fillcolor('#333333')

t.begin_fill()

t.circle(22)

t.end_fill()

self.onTrace_goto(x,y+10)

t.fillcolor('#000000')

t.begin_fill()

t.circle(10)

t.end_fill()

self.onTrace_goto(x+6,y+22)

t.fillcolor('#ffffff')

t.begin_fill()

t.circle(10)

t.end_fill()

def rightEye(self,x,y):

self.onTrace_goto(x,y)

t = self.t

t.seth(0)

t.fillcolor('#333333')

t.begin_fill()

t.circle(22)

t.end_fill()

self.onTrace_goto(x,y+10)

t.fillcolor('#000000')

t.begin_fill()

t.circle(10)

t.end_fill()

self.onTrace_goto(x-6,y+22)

t.fillcolor('#ffffff')

t.begin_fill()

t.circle(10)

t.end_fill()

def mouth(self,x,y):

self.onTrace_goto(x,y)

t = self.t

t.fillcolor('#88141D')

t.begin_fill()

# 下嘴唇

l1 = []

l2 = []

t.seth(190)

a = 0.7

for i in range(28):

a +=0.1

t.right(3)

t.fd(a)

l1.append(t.position())

self.onTrace_goto(x,y)

t.seth(10)

a = 0.7

for i in range(28):

a +=0.1

t.left(3)

t.fd(a)

l2.append(t.position())

#上嘴唇

t.seth(10)

t.circle(50,15)

t.left(180)

t.circle(-50,15)

t.circle(-50,40)

t.seth(233)

t.circle(-50,55)

t.left(180)

t.circle(50,12.1)

t.end_fill()

# 舌头

self.onTrace_goto(17,54)

t.fillcolor('#DD716F')

t.begin_fill()

t.seth(145)

t.circle(40,86)

t.penup()

for pos in reversed(l1[:20]):

t.goto(pos[0],pos[1]+1.5)

for pos in l2[:20]:

t.goto(pos[0],pos[1]+1.5)

t.pendown()

t.end_fill()

# 鼻子

self.onTrace_goto(-17,94)

t.seth(8)

t.fd(4)

t.back(8)

# 红脸颊

def leftCheck(self,x,y):

turtle.tracer(False)

t = self.t

self.onTrace_goto(x,y)

t.seth(60)

t.fillcolor('#DD4D28')

t.begin_fill()

a = 2.3

for i in range(120):

if 0 <= i <30 or 60 <= i <90:

a -= 0.05

t.lt(3)

t.fd(a)

else:

a += 0.05

t.lt(3)

t.fd(a)

t.end_fill()

turtle.tracer(True)

def rightCheck(self,x,y):

t = self.t

turtle.tracer(False)

self.onTrace_goto(x,y)

t.seth(60)

t.fillcolor('#DD4D28')

t.begin_fill()

a = 2.3

for i in range(120):

if 0<= i<30 or 60 <= i< 90:

a -= 0.05

t.lt(3)

t.fd(a)

else:

a += 0.05

t.lt(3)

t.fd(a)

t.end_fill()

turtle.tracer(True)

def colorLeftEar(self,x,y):

t = self.t

self.onTrace_goto(x,y)

t.fillcolor('#000000')

t.begin_fill()

t.seth(330)

t.circle(100,35)

t.seth(219)

t.circle(-300,19)

t.seth(110)

t.circle(-30,50)

t.circle(-300,10)

t.end_fill()

def colorRightEar(self,x,y):

t = self.t

self.onTrace_goto(x,y)

t.fillcolor('#000000')

t.begin_fill()

t.seth(300)

t.circle(-100,30)

t.seth(35)

t.circle(300,15)

t.circle(30,50)

t.seth(190)

t.circle(300,17)

t.end_fill()

def body(self):

t = self.t

t.fillcolor('#F6D02F')

# 右脸轮廓

t.penup()

t.circle(130,40)

t.pendown()

t.circle(100,105)

t.left(180)

t.circle(-100,5)

# 右耳朵

t.seth(20)

t.circle(300,30)

t.circle(30,50)

t.seth(190)

t.circle(300,36)

# 上轮廓

t.seth(150)

t.circle(150,70)

#左耳朵

t.seth(200)

t.circle(300,40)

t.circle(30,50)

t.seth(20)

t.circle(300,35)

# 左脸轮廓

t.seth(240)

t.circle(105,95)

t.left(180)

t.circle(-105,5)

#左手

t.seth(210)

t.circle(500,18)

t.seth(200)

t.fd(10)

t.seth(280)

t.fd(7)

t.seth(210)

t.seth(300)

t.circle(10,80)

t.seth(220)

t.seth(10)

t.seth(300)

t.circle(10,80)

t.seth(240)

t.fd(12)

t.seth(0)

t.fd(13)

t.seth(240)

t.circle(10,70)

t.seth(10)

t.circle(10,70)

t.seth(10)

t.circle(300,18)

t.seth(75)

t.circle(500,8)

t.left(180)

t.circle(-500,15)

t.seth(250)

t.circle(100,65)

# 左脚

t.seth(320)

t.circle(100,5)

t.left(180)

t.circle(-100,5)

t.seth(220)

t.circle(200,20)

t.circle(20,70)

t.seth(60)

t.circle(-100,20)

t.left(180)

t.circle(100,20)

t.seth(300)

t.circle(10,70)

t.seth(60)

t.circle(-100,20)

t.left(180)

t.circle(100,20)

t.seth(10)

t.circle(100,60)

# 横向

t.seth(180)

t.circle(-100,10)

t.left(180)

t.circle(100,10)

t.seth(5)

t.circle(100,10)

t.circle(-100,40)

t.circle(100,35)

t.left(180)

t.circle(-100,10)

# 右脚

t.seth(290)

t.circle(100,55)

t.circle(10,50)

t.seth(120)

t.circle(100,20)

t.left(180)

t.circle(-100,20)

t.seth(0)

t.circle(10,50)

t.seth(110)

t.circle(110,20)

t.left(180)

t.circle(-100,20)

t.seth(30)

t.circle(20,50)

t.seth(100)

t.circle(100,40)

# 右侧身体轮廓

t.seth(200)

t.circle(-100,5)

t.left(180)

t.circle(100,5)

t.left(30)

t.circle(100,75)

t.right(15)

t.circle(-300,21)

t.left(180)

t.circle(300,3)

# 右手

t.seth(43)

t.circle(200,60)

t.right(10)

t.fd(10)

t.circle(5,160)

t.seth(90)

t.circle(5,160)

t.seth(90)

t.fd(10)

t.seth(90)

t.circle(5,180)

t.fd(10)

t.left(180)

t.left(20)

t.fd(10)

t.circle(5,170)

t.fd(10)

t.seth(240)

t.circle(50,30)

t.end_fill()

self.onTrace_goto(130,125)

t.seth(-20)

t.fd(5)

t.circle(-5,160)

t.fd(5)

# 手指纹

self.onTrace_goto(166,130)

t.seth(-90)

t.fd(3)

t.circle(-4,180)

t.fd(3)

t.seth(-90)

t.fd(3)

t.circle(-4,180)

t.fd(3)

# 尾巴

self.onTrace_goto(168,134)

t.fillcolor('#F6D02F')

t.begin_fill()

t.seth(40)

t.fd(200)

t.seth(-80)

t.fd(150)

t.seth(210)

t.fd(150)

t.left(90)

t.fd(100)

t.right(95)

t.fd(100)

t.left(110)

t.fd(70)

t.right(110)

t.fd(80)

t.left(110)

t.fd(30)

t.right(110)

t.fd(32)

t.right(106)

t.circle(100,25)

t.right(15)

t.circle(-300,2)

t.seth(30)

t.fd(40)

t.left(100)

t.fd(70)

t.right(100)

t.fd(80)

t.left(100)

t.fd(46)

t.seth(66)

t.circle(200,38)

t.right(10)

t.end_fill()

# 尾巴花纹

t.fillcolor('#923E24')

self.onTrace_goto(126.82,-156.84)

t.begin_fill()

t.seth(30)

t.fd(40)

t.left(100)

t.fd(40)

t.pencolor('#923e24')

t.seth(-30)

t.fd(30)

t.left(140)

t.fd(20)

t.left(150)

t.fd(20)

t.right(150)

t.fd(20)

t.left(130)

t.fd(18)

t.pencolor('#000000')

t.seth(-45)

t.fd(67)

t.right(110)

t.fd(30)

t.left(110)

t.fd(32)

t.right(106)

t.circle(100,25)

t.right(15)

t.circle(-300,2)

t.end_fill()

# 帽子、眼睛、嘴巴、脸颊

self.cap(-134.07,147.81)

self.mouth(-5,25)

self.leftCheck(-126,32)

self.rightCheck(107,63)

self.colorLeftEar(-250,100)

self.colorRightEar(150,270)

self.leftEye(-85,90)

self.rightEye(50,110)

t.hideturtle()

def cap(self,x,y):

self.onTrace_goto(x,y)

t = self.t

t.fillcolor('#CD0000')

t.begin_fill()

t.seth(200)

t.circle(400,7)

t.left(180)

t.circle(-400,30)

t.circle(30,60)

t.fd(60)

t.circle(30,45)

t.fd(60)

t.left(5)

t.circle(30,70)

t.right(20)

t.circle(200,70)

t.circle(30,60)

t.fd(70)

t.right(35)

t.fd(50)

t.right(35)

t.fd(50)

t.circle(8,100)

t.end_fill()

self.onTrace_goto(-168.47,185.52)

t.seth(36)

t.circle(-270,54)

t.left(180)

t.circle(270,27)

t.circle(-80,98)

t.fillcolor('#444444')

t.begin_fill()

t.left(180)

t.circle(80,197)

t.left(58)

t.circle(200,45)

t.end_fill()

self.onTrace_goto(-58,270)

t.pencolor('#228B22')

t.dot(35)

self.onTrace_goto(-30,280)

t.fillcolor('#228B22')

t.begin_fill()

t.seth(100)

t.circle(30,180)

t.seth(190)

t.fd(15)

t.seth(100)

t.circle(-45,180)

t.right(90)

t.fd(15)

t.end_fill()

t.fillcolor('#228B22')

def start(self):

self.body()

def main():

print(" Painting the Pikachu....")

turtle.screensize(800,600)

turtle.title("Pickachu")

pickachu = Pikachu()

pickachu.start()

turtle.mainloop() # running

if __name__ =='__main__':

main()

4,绘制 哆啦A梦录制_2020_08_01_22_14_50_40.gif

代码部分

#五轨迹跳跃

def my_goto(x,y):

penup()

goto(x,y)

pendown()

def eyes():

fillcolor('#ffffff')

begin_fill()

tracer(False)

a = 2.5

for i in range(120):

if 0<= i<30 or 60 <= i <90:

a -= 0.05

lt(3)

fd(a)

else:

a += 0.05

lt(3)

fd(a)

tracer(True)

end_fill()

#胡须

def beard():

my_goto(-32,135)

seth(165)

fd(60)

my_goto(-32,125)

seth(180)

fd(60)

my_goto(-32,115)

seth(193)

fd(60)

my_goto(37,135)

seth(15)

fd(60)

my_goto(37,125)

seth(0)

fd(60)

my_goto(37,115)

seth(-13)

fd(60)

#嘴巴

def mouth():

my_goto(5,148)

seth(270)

fd(100)

seth(0)

circle(120,50)

seth(230)

circle(-120,100)

#围巾

def scarf():

fillcolor('#e70010')

begin_fill()

seth(0)

fd(200)

circle(-5,90)

fd(10)

circle(-5,90)

fd(207)

circle(-5,90)

fd(10)

circle(-5,90)

end_fill()

#鼻子

def nose():

my_goto(-10,158)

seth(315)

fillcolor('#e70010')

begin_fill()

circle(20)

end_fill()

#黑眼睛

def black_eyes():

seth(0)

my_goto(-20,195)

fillcolor('#000000')

begin_fill()

circle(13)

end_fill()

pensize(6)

my_goto(20,205)

seth(75)

circle(-10,150)

pensize(3)

my_goto(-17,200)

seth(0)

fillcolor('#ffffff')

begin_fill()

circle(5)

end_fill()

my_goto(0,0)

def face():

fd(183)

lt(45)

fillcolor('#ffffff')

begin_fill()

circle(120,100)

seth(180)

fd(121)

pendown()

seth(215)

circle(120,100)

end_fill()

my_goto(63.56,218.24)

seth(90)

eyes()

seth(180)

penup()

fd(60)

pendown()

seth(90)

eyes()

penup()

seth(180)

fd(64)

def head():

penup()

circle(150,40)

pendown()

fillcolor('#00a0de')

begin_fill()

circle(150,280)

end_fill()

# body

def Doraemon():

head()

scarf()

face()

nose()

mouth()

beard()

my_goto(0,0)

seth(0)

penup()

circle(150,50)

pendown()

seth(30)

fd(40)

seth(70)

circle(-30,270)

fillcolor('#00a0de')

begin_fill()

seth(230)

fd(80)

seth(90)

circle(1000,1)

seth(-89)

circle(-1000,10)

seth(180)

fd(70)

seth(90)

circle(30,180)

seth(180)

fd(70)

seth(100)

circle(-1000,9)

seth(-86)

circle(1000,2)

seth(230)

fd(40)

circle(-30,230)

seth(45)

fd(81)

seth(0)

fd(203)

circle(5,90)

fd(10)

circle(5,90)

fd(7)

seth(40)

circle(150,10)

seth(30)

fd(40)

end_fill()

seth(70)

fillcolor('#ffffff')

begin_fill()

circle(-30)

end_fill()

my_goto(103.74,-182.59)

seth(0)

fillcolor('#ffffff')

begin_fill()

fd(15)

circle(-15,180)

fd(90)

circle(-15,180)

fd(10)

end_fill()

#右手

my_goto(-103.42,15.09)

seth(0)

fd(38)

seth(230)

begin_fill()

circle(90,260)

end_fill()

my_goto(5,-40)

seth(0)

fd(70)

seth(-90)

circle(-70,180)

seth(0)

fd(70)

#铃铛

my_goto(-103.42,15.09)

fd(90)

seth(70)

fillcolor('#ffd200')

begin_fill()

circle(-20)

end_fill()

seth(170)

fillcolor('#ffd200')

begin_fill()

circle(-2,180)

seth(10)

circle(-100,22)

circle(-2,180)

seth(180-10)

circle(100,22)

end_fill()

goto(-13.42,15.09)

seth(250)

circle(20,110)

seth(90)

fd(15)

dot(10)

my_goto(0,-150)

#画眼睛

black_eyes()

if __name__ =='__main__':

screensize(800,600,'#f0f0f0')

pensize(3) # size of pen

speed(9) # speed of pen

Doraemon()

my_goto(100,-300)

write("by zeroing",font = ("Bladley Hand ITC",30,'bold'))

mainloop()

从上面的代码行数应该了解一点, turtle 最难的地方不是它的用法,而是使用者对于整个物体的几何整体塑造,必须全局把握地非常准,否则最终很难绘制出比较满意的图案

感兴趣的同学可以直接把上面代码复制到自己的 IDE 中,直接运行就可以,以上就是本篇文章的所有内容啦,最后感谢大家的阅读!

python画皮卡丘全身立体_超酷!用 Python 教你绘制皮卡丘和哆啦A梦相关推荐

  1. python做大屏数据可视化_超强大!Python 可视化这款大屏就够了!

    对于从事数据领域的小伙伴来说,当需要阐述自己观点.展示项目成果时,我们需要在最短时间内让别人知道你的想法.我相信单调乏味的语言很难让别人快速理解.最直接有效的方式就是将数据进行可视化展现. 提到数据可 ...

  2. 怎么用python画个电脑_python语言还是java如何用python画爱心

    用python绘制爱心的基本步骤如下: 002pc.com对<python语言还是java如何用python画爱心>总结来说,为我们学习Python很实用. 首先先下载安装好python程 ...

  3. 用python画五角星中心颜色不同_画个五角星让它绕中心点旋转

    李兴球Python画个五角星绕中心点旋转 画一个五角星让它旋转起来,这在Python中有几个方案可选,这里提供一个不是用自定义形状的方案,以下是部分源代码, 其实关键的代码函数,也就是starpoin ...

  4. python http服务器_超简单的Python HTTP服务

    超如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python 可能帮助你.使用Python可以完成一个简单的内建 H ...

  5. 用python实现视频换脸_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  6. python画正方形并涂色_关于python使用cv画矩形并填充颜色同时填充文字

    原博文 2017-05-08 12:18 − font = cv2.FONT_HERSHEY_SIMPLEX # 使用默认字体 cv2.rectangle(im, (10, 10), (110, 11 ...

  7. python画二维温度云图_利用python画出词云图

    本文将介绍如何利用python中相应的模块画出词云图.首先给出效果图: 其中词云图中的词汇是对手机短信中的垃圾短信的统计,字体越大表示在垃圾短信中出现的频次越高.下面给出具体的步骤. 读取" ...

  8. python画正方形并涂色_这种图片怎么用python画出来,每一个数字代表一种颜色?...

    Python 画正方形,写数字的代码如下: from PIL import Image, ImageDraw, ImageFont, ImageFilter WIDTH = 100 * 4 HEIGH ...

  9. 用python画六边形并填充颜色_如何用Python,画一个正多边形,长度和颜色还是任意的!...

    Python画基本形状,要用到自带的turtle库,这是个简单绘图的入门小工具. 任务设定如上,下面来一点点拆解它. 从键盘获取用户输入的边数. 画笔形状由原来的三角形,改为海龟形状. 长度随机产生, ...

最新文章

  1. mongoDB设置用户名密码的一个要点
  2. 网络编程学习笔记(ICMPv6和IPv6套接口选项)
  3. [Codeforces958F2]Lightsabers (medium)(思维)
  4. 当 RocketMQ 遇上 Serverless,会碰撞出怎样的火花?
  5. ERP系统实施过程问题概览
  6. Android Studio——[Missing essential plugin: org.jetbrains.android ...]解决方案
  7. 一个链表创建、反转、打印的C语言代码
  8. 第十九节:Asp.Net Core WebApi知识总结(一)
  9. 操作系统学习笔记-2.1.5线程概念和多线程模型
  10. Android逆向笔记-Unity3D逆向一般思路(静态分析)
  11. Android使用ksoap2调用C#中的webservice实现图像上传
  12. 【2017百度之星资格赛】1004.度度熊的午饭时光思路及代码
  13. JS-记事本(代码)
  14. vue问题解决 extract:echarts: sill extract echarts@^4.2.0-rc.2 extracted to
  15. 七年切图仔如何面试大厂web前端?(沟通软技能总结)
  16. python读取ttf_python读取.ttf字体文件
  17. 配置java win10_win10 Java14安装及配置
  18. Android 针对华为手机调用裁剪出现圆形裁剪框的处理
  19. SQL Developer连接时报错:ORA-12528
  20. Android 剩余可用时长的计算公式

热门文章

  1. 苹果IOS手机端该如何连接PPTP?
  2. 前端知识大全之CSS(含有JS)
  3. arduino 编程ide_10种Arduino IDE替代品开始编程
  4. 使用Github上传项目
  5. 针对当当网畅销书籍榜单前500的研究分析
  6. Photoshop教您快速的制作标准一寸证件照教程
  7. 江南大学计算机考研考场在哪,2019年江南大学考研考场安排
  8. Linux JDK Tomcat 安装配置
  9. 如何掌握恒指期货高手交易的赢家心态
  10. 以libs方式倒入jar和aar包