python绘制皮卡丘 dongdong_用python绘制皮卡丘

科普:皮卡丘是日本任天堂公司开发的掌机游戏系列《口袋妖怪》中登场精灵中的一种,为口袋妖怪里代表性的角色。

随着其周边动画宠物小精灵(即神奇宝贝)动画的热播,这只神奇宝贝的魅力逐渐开始被低年龄层的玩家所接受,随之带动的是女性玩家,标志着这股皮卡丘风潮的到来。

今天我将和大家一起用python脚本来绘制萌萌哒皮卡丘。。。

1. 首先来看看python皮卡丘代码绘制成品

2. 分解python代码讲解

2.1 下载并加载库

turtle库(相当于给你一支画笔,你可以在画布上用数学逻辑控制的代码完成绘图)

random库from turtle import *

import turtle as t

from random import *

2.2 接下来挑选中间的一段代码进行讲解,其它代码放在最后总代码中,有疑问可以在公众号后台咨询我,也可以通过文末我的联系方式和我讨论。"""画嘴"""

color("black", "#F35590") #设置颜色

# 下嘴弧度并填充颜色

penup() #提起画笔,用于另起一个地方绘制时使用

goto(-100, 72) #移动到绝对坐标(-100,72)处

pendown() #放下画笔,移到指定点(-100,72)后继续绘制

begin_fill() #填充图形前,调用该方法

setheading(260) #设置当前朝向为260度

forward(60) #沿着当前方向前进指定距离

circle(-11, 150) #绘制一个指定半径(-11),角度(150)的弧形

forward(55) #沿着当前方向前进指定距离

print(position()) #打印当前位置

penup()

goto(-128.46, 71.97)

pendown()

end_fill() #填充图形结束和begin_fill配对使用

#嘴中最上方的阴影部分

color("#6A070D", "#6A070D") #设置填充颜色

begin_fill() #用上行代码设定的颜色开始填充

penup() #抬起画笔

goto(-99.00, 72.00) #移动到绝对位置(-99.00, 72.00)

pendown() #放下画笔

penup() #抬起画笔

goto(-104.29, 48.3) #移动到绝对位置(-104.29, 48.3)

pendown() #放下画笔

penup() #抬起画笔

goto(-142, 45) #移动到绝对位置(-142, 45)

pendown() #放下画笔

penup() #抬起画笔

goto(-150.40, 62.74) #移动到绝对位置(-150.40, 62.74)

pendown() #放下画笔

penup()

goto(-128.46, 71.97)

pendown()

penup()

goto(-99.00, 72.00)

pendown()

end_fill()

#注:不停地放下和抬起画笔其实就是围城一个待填充特定颜色的区域

#上嘴唇

color("black","#FFD624")

penup()

goto(-168, 65)

pendown()

begin_fill()

setheading(-25)

for i in range(2):

setheading(-25)

circle(35, 70)

end_fill()

#嘴中第二个阴影部分

color("#AB1945", "#AB1945")

penup()

goto(-142, 45)

pendown()

begin_fill()

setheading(40)

circle(-33, 70)

goto(-104,48.3)

penup()

goto(-108,33)

pendown()

setheading(155)

circle(25, 70)

end_fill()

3. 全部代码

注:代码中的假期愉快可以替换成任何你想替换的文字# coding:utf-8

from turtle import *

import turtle as t

from random import *

def infoPrt():

print('coordinate: ' + str(t.pos()))

print('angle: ' + str(t.heading()))

t.pensize(3)

t.hideturtle()

t.colormode(255)

t.color("black")

t.setup(700, 650)

t.speed(1)

t.st()

#t.dot()

t.pu()

#t.goto(-150,100)

t.goto(-210,86)

t.pd()

infoPrt()

# 头

print('头')

t.seth(85)

t.circle(-100,50)

#t.seth(78)

#t.circle(-100,25)

infoPrt()

t.seth(25)

t.circle(-170,50)

infoPrt()

# 右耳

print('右耳')

t.seth(40)

#t.circle(-250,52)

t.circle(-250,30)

infoPrt()

# 右耳尖

t.begin_fill()

# 左

t.circle(-250,22)

#t.fillcolor("pink")

# 右

t.seth(227)

t.circle(-270, 15)

prePos = t.pos()

infoPrt()

# 下

t.seth(105)

t.circle(100, 32)

t.end_fill()

t.pu()

t.setpos(prePos)

t.pd()

t.seth(212)

t.circle(-270, 28)

prePos = t.pos()

t.pu()

t.goto(t.xcor()+5,t.ycor()-2)

t.pd()

# 躯干

print('躯干')

t.seth(280)

t.circle(500, 30)

infoPrt()

# 臀部

print('臀部')

t.seth(120)

#t.circle(150, -55)

t.circle(150, -11)

p_tail=t.pos()

t.circle(150, -44)

p_butt=t.pos()

infoPrt()

# 尾巴

t.pu()

t.setpos(p_tail)

t.pd()

t.begin_fill()

t.seth(50)

t.fd(25)

t.seth(-50)

t.fd(30)

p_tail1=t.pos

t.seth(-140)

t.fd(36)

t.end_fill()

t.seth(39)

# 右尾和h1

t.fd(72)

# 右尾和v1

t.seth(125)

t.fd(48)

# 右尾和h2

t.seth(40)

t.fd(53)

# 右尾和v2

t.seth(88)

t.fd(45)

# 右尾和h3

t.seth(35)

t.fd(105)

# 右尾和v3

t.seth(105)

t.circle(850, 8)

#t.fd(105)

t.seth(215)

#t.fd(125)

t.circle(850, 11)

t.seth(280)

t.fd(110)

t.seth(220)

t.fd(50)

t.seth(309)

t.fd(56)

# 底盘

print('底盘')

t.pu()

t.setpos(p_butt)

t.pd()

t.seth(20)

t.circle(120, -45)

infoPrt()

t.seth(330)

t.circle(-150, -30)

infoPrt()

prePos = t.pos()

t.pu()

t.goto(t.xcor()+20,t.ycor())

t.pd()

t.seth(230)

t.circle(-70, 120)

p_bot=t.pos()

# 两脚-right

t.pu()

t.setpos(p_butt)

t.setpos(t.xcor()+5,t.ycor()+5)

t.pd()

t.seth(-86)

t.fd(30)

t.seth(-93)

t.fd(33)

t.seth(-225)

t.circle(-150, 22)

# 两脚-left

t.pu()

t.setpos(p_bot)

t.setpos(t.xcor()+85,t.ycor()-43)

t.pd()

t.seth(-105)

t.fd(50)

t.seth(-225)

t.circle(-150, 22)

# 左躯干

print('躯干')

t.pu()

t.setpos(p_bot)

t.pd()

t.seth(90)

t.circle(450, 13)

p_lfhd = t.pos()

t.circle(450, 5)

t.pu()

t.circle(450, 5)

t.pd()

t.circle(450, 6)

infoPrt()

# 左脸

t.begin_fill()

t.fillcolor("pink")

print('左脸')

t.seth(330)

t.circle(50, -90)

infoPrt()

# 左酒窝

t.seth(30)

t.circle(-15, 120)

t.seth(-70)

t.circle(-30, 90)

t.end_fill()

# 左手

t.pu()

t.setpos(p_lfhd)

t.pd()

t.seth(160)

t.circle(150, 30)

infoPrt()

t.seth(180)

t.circle(-30, 150)

t.fd(67)

t.pu()

t.setpos(t.xcor()-40,t.ycor()-60)

t.pd()

t.seth(200)

t.circle(-5, 180)

# 右手

t.pu()

t.setpos(p_lfhd)

t.setpos(t.xcor()+180,t.ycor()+5)

t.pd()

t.seth(200)

t.circle(-50, 100)

t.pu()

t.circle(-50, 15)

t.pd()

t.circle(-50, 65)

t.pu()

t.setpos(t.xcor()+10,t.ycor()-45)

t.pd()

#t.seth(270)

#t.circle(-30, -180)

t.seth(80)

t.fd(10)

t.seth(165)

t.circle(10, 60)

t.seth(90)

t.fd(5)

t.seth(165)

t.circle(10, 60)

t.seth(95)

t.fd(5)

t.seth(185)

t.circle(10, 60)

t.seth(105)

t.fd(10)

t.seth(230)

t.fd(20)

t.seth(145)

t.fd(10)

t.seth(285)

t.fd(20)

# 右酒窝

t.begin_fill()

t.fillcolor("pink")

t.pu()

t.setpos(t.xcor()-40,t.ycor()+110)

t.pd()

t.circle(27, 360)

t.end_fill()

#x-20 ,y+50

"""画嘴"""

color("black", "#F35590")

# 下嘴弧度并填充颜色

penup()

goto(-100, 72)

pendown()

begin_fill()

setheading(260)

forward(60)

circle(-11, 150)

forward(55)

print(position())

penup()

goto(-128.46, 71.97)

pendown()

end_fill()

#嘴中最上方的阴影部分

color("#6A070D", "#6A070D")

begin_fill()

penup()

goto(-99.00, 72.00)

pendown()

penup()

goto(-104.29, 48.3)

pendown()

penup()

goto(-142, 45)

pendown()

penup()

goto(-150.40, 62.74)

pendown()

penup()

goto(-128.46, 71.97)

pendown()

penup()

goto(-99.00, 72.00)

pendown()

end_fill()

#上嘴唇

color("black","#FFD624")

penup()

goto(-168, 65)

pendown()

begin_fill()

setheading(-25)

for i in range(2):

setheading(-25)

circle(35, 70)

end_fill()

#嘴中第二个阴影部分

color("#AB1945", "#AB1945")

penup()

goto(-142, 45)

pendown()

begin_fill()

setheading(40)

circle(-33, 70)

goto(-104,48.3)

penup()

goto(-108,33)

pendown()

setheading(155)

circle(25, 70)

end_fill()

# 左眼

t.pu()

t.color("black")

t.setpos(t.xcor()-40,t.ycor()+90)

t.pd()

t.circle(5)

t.pu()

t.setpos(t.xcor()+5,t.ycor()+10)

t.pd()

t.begin_fill()

t.seth(190)

t.circle(15, 130)

t.seth(310)

t.circle(10, 15)

t.seth(0)

t.circle(17, 133)

t.seth(90)

t.circle(10, 15)

t.end_fill()

t.pu()

t.setpos(t.xcor()+2,t.ycor()-15)

t.pd()

t.color("white")

t.begin_fill()

t.circle(5)

t.end_fill()

# 右眼

t.pu()

t.setpos(t.xcor()+85,t.ycor()+15)

t.pd()

t.color("black")

t.circle(5)

t.pu()

t.setpos(t.xcor()+5,t.ycor()+10)

t.pd()

t.begin_fill()

t.seth(190)

t.circle(20, 130)

t.seth(310)

t.circle(10, 15)

t.seth(0)

t.circle(22, 133)

t.seth(90)

t.circle(13, 15)

t.end_fill()

t.pu()

t.setpos(t.xcor()-7,t.ycor()-15)

t.pd()

t.color("white")

t.begin_fill()

t.circle(7)

t.end_fill()

# 左耳

t.color("black")

t.pu()

t.goto(-210,86)

t.setpos(t.xcor()+15,t.ycor()+38)

t.pd()

t.seth(90)

t.circle(-250,30)

t.begin_fill()

# 左

t.circle(-250,18)

# 右

t.seth(270)

t.circle(-270, 12)

prePos = t.pos()

# 下

t.seth(180)

t.circle(100, 30)

t.end_fill()

t.pu()

t.setpos(prePos)

t.pd()

t.seth(270)

t.circle(-270, 18)

t.screensize(50,50,bg='yellow')

# 输出文字

printer = t.Turtle()

printer.hideturtle()

printer.penup()

printer.goto(-350,-100)

printer.write("假\n\n",move = True, align="left", font=("楷体", 30, "bold"))

printer.goto(-350,-150)

printer.write("期\n\n",move = True, align="left", font=("楷体", 30, "bold"))

printer.goto(-350,-200)

printer.write("愉\n\n",move = True, align="left", font=("楷体", 30, "bold"))

printer.goto(-350,-250)

printer.write("快!\n\n",move = True, align="left", font=("楷体", 30, "bold"))

t.hideturtle()

t.done()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值