用Python代码画世界杯吉祥物拉伊卜(附代码)
世界杯正在火热进行中,世界杯的吉祥物拉伊卜也非常火。
本文用Python代码画世界杯吉祥物。不废话,可以直接先看视频效果。
视频效果
用Python代码画世界杯吉祥物拉伊卜
实现方法介绍
本文的绘图工具使用Python的标准库turtle库,无需安装,导入即可使用。
部分函数用法介绍:
画布设置
- title(): 设置窗口的标题。
- bgpic():设置背景图片。
- setup(width, height, x, y): 设置窗口大小和窗口左上角在屏幕中的位置。
- shape():设置鼠标的形状。
- done(): 绘图结束后,不自动关闭窗口。
画笔设置
- pencolor(color): 设置画笔颜色。
- width(): 设置画笔宽度。
- speed(int): 设置画笔的速度,传入1~10的数字,1最慢,10最快。传入其他值会更快,但是没有鼠标移动的动画效果。
- penup(): 提起画笔,提起后移动画笔不会留下痕迹。
- pendown(): 落下画笔,开始绘图前先将画笔落下。
- setx(value): 设置画笔的x轴坐标。
- sety(value): 设置画笔的y轴坐标。
- towards(x, y): 设置画笔指向的点。
- setheading(): 设置画笔的方向。与towards()配合可以设置画笔指向某个点,如setheading(towards(0, 0))可以设置画笔指向原点。
- pos(): 返回画笔当前的坐标。鼠标移动一段时间后可以print()打印此函数获取鼠标位置。
- heading(): 返回画笔当前的方向。
画笔操作
- circle(radius[, extent=arc]): 画一个圆,传入圆的半径,根据画笔的方向控制圆心的位置,圆心与画笔的方向垂直。传入弧度值可以画出指定弧度的圆弧。
- left(angle): 画笔左转,传入任意一个目标角度。
- right(angle): 画笔右转。
- forward(distance): 画笔前进一段距离。
- backward(distance): 画笔后退一段距离。
- goto(x, y): 移动画笔到指定坐标。
颜色填充
- begin_fill(): 开始填充。
- fillcolor(color): 设置图形中填充的颜色。
- end_fill(): 结束填充。
具体画图时,调整画笔的起点,设置不同的转角度数和不同的前进长度,可以得到不同形状的弧线,用弧线构成完整的图形。
与原图对比
部分代码
# coding=utf-8from turtle import*import time
defset_start(x, y, w=0.5, c='black'):# 设置画笔开始的位置,绘制每一个部分的图形时,将鼠标移到起始点
penup()# 提起画笔
setx(x)# 设置画笔的x坐标
sety(y)# 设置画笔的y坐标
setheading(towards(0,0))# 默认设置画笔指向坐标原点0,0
width(w)# 设置画笔的宽度
pencolor(c)# 设置画笔的颜色
pendown()# 落下画笔,开始绘图
speed(0)# 设置画笔的速度,1-9依次越来越快,其他数字比9更快defleft_rotate(time, angle, length):# 绘制向左转的弧度,左转一定角度然后前进一段距离,重复多次就得到一个弧度for i inrange(time):# 重复次数
left(angle)# 左转的角度
forward(length)# 前进距离defright_rotate(time, angle, length):# 绘制向右转的弧度,右转一定角度然后前进一段距离,重复多次就得到一个弧度for i inrange(time):# 重复次数
right(angle)# 右转的角度
forward(length)# 前进距离deffill_color_patch(x, y, c='white'):# 填充颜色时会找上一个图形的介绍点,此函数重置结束点,避免填充效果不准
set_start(x, y,1, c=c)
forward(1)defdraw_circle(radius, color, color2=''):# 绘制一个圆,radius是圆的半径,color是边框颜色,color2是填充颜色if color2 =='':
color2 = color
penup()
setheading(towards(0,0))
right(90)
pencolor(color)
pendown()
begin_fill()
circle(radius)# 画圆
fillcolor(color2)
end_fill()defdraw_football():# 足球# set_start(15, -157, w=1, c='black')# draw_circle(39, 'black', '#DCDCDC')
fill_color_patch(39.34,-90.63)
begin_fill()
set_start(39.34,-90.63, w=2, c='black')
setheading(124.2)
left_rotate(20,18,12.2)
goto(39.34,-90.63)
fillcolor('#DCDCDC')
end_fill()
fill_color_patch(-25,-110)
begin_fill()
set_start(-25,-110, w=1, c='white')
right_rotate(1,160,10)
left_rotate(5,20,12)
left_rotate(4,18,12)
pencolor('black')
left_rotate(1,35,12)
left_rotate(7,18,12.1)
goto(-25,-110)
fillcolor('white')
end_fill()
fill_color_patch(-25,-108)
begin_fill()
set_start(-25,-108, w=1, c='black')
right_rotate(1,20,4)
right_rotate(2,10,3)
left_rotate(1,35,5)
left_rotate(1,165,5)
right_rotate(2,15,3)
goto(-25,-108)
fillcolor('black')
end_fill()
fill_color_patch(-16,-101)
begin_fill()
set_start(-16,-101, w=1, c='black')
right_rotate(1,35,8)
right_rotate(1,140,4)
left_rotate(2,21,2)
left_rotate(2,8,4.5)
right_rotate(1,105,8)
right_rotate(1,120,3)
left_rotate(3,15,4)
goto(-16,-101)
fillcolor('black')
end_fill()
fill_color_patch(-10,-93)
begin_fill()
set_start(-10,-93, w=1, c='black')
left_rotate(1,90,4)
right_rotate(1,135,5)
right_rotate(2,3,7)
right_rotate(1,60,3)
right_rotate(1,135,5)
left_rotate(3,10,4)
goto(-10,-93)
fillcolor('black')
end_fill()
fill_color_patch(6,-82)
begin_fill()
set_start(6,-82, w=1, c='black')
right_rotate(1,50,4)
right_rotate(1,60,6)
right_rotate(2,3,7)
right_rotate(1,130,4)
right_rotate(1,60,5)
left_rotate(3,8,4)
goto(6,-82)
fillcolor('black')
end_fill()
fill_color_patch(30,-88)
begin_fill()
set_start(30,-88, w=1, c='black')
right_rotate(1,130,5)
right_rotate(1,15,5)
right_rotate(1,150,5)
goto(30,-88)
fillcolor('black')
end_fill()
fill_color_patch(25,-89)
begin_fill()
set_start(25,-89, w=1, c='black')
right_rotate(1,140,8)
right_rotate(1,95,4)
left_rotate(2,25,6)
right_rotate(1,130,8)
right_rotate(1,110,3)
left_rotate(3,20,4)
goto(25,-89)
fillcolor('black')
end_fill()
fill_color_patch(20,-106)
begin_fill()
set_start(20,-106, w=1, c='black')
right_rotate(1,180,8)
right_rotate(1,120,4)
left_rotate(3,18,5.8)
right_rotate(1,120,8)
right_rotate(1,110,3)
left_rotate(3,14,5)
goto(20,-106)
fillcolor('black')
end_fill()
fill_color_patch(-8,-117)
begin_fill()
set_start(-8,-117, w=1, c='black')
right_rotate(1,100,8)
right_rotate(1,115,4)
left_rotate(2,16,5)
left_rotate(1,22,6)
right_rotate(1,125,8)
right_rotate(1,120,3)
left_rotate(1,25,4)
left_rotate(3,15,4)
goto(-8,-117)
fillcolor('black')
end_fill()
fill_color_patch(-12,-137)
begin_fill()
set_start(-12,-137, w=1, c='black')
right_rotate(1,145,8)
right_rotate(1,148,4)
left_rotate(2,18,3.2)
right_rotate(1,55,7)
right_rotate(1,165,3)
left_rotate(3,20,3)
goto(-12,-137)
fillcolor('black')
end_fill()
fill_color_patch(-6,-144)
begin_fill()
set_start(-6,-144, w=1, c='black')
right_rotate(1,35,6)
right_rotate(1,105,4)
left_rotate(3,16,5.5)
right_rotate(1,130,5)
right_rotate(1,78,3)
left_rotate(3,5,4)
goto(-6,-144)
fillcolor('black')
end_fill()
fill_color_patch(23,-115)
begin_fill()
set_start(23,-115, w=1, c='black')
right_rotate(1,60,8)
right_rotate(1,120,4)
left_rotate(3,12,5.3)
right_rotate(1,100,8)
right_rotate(1,130,3)
left_rotate(3,15,5)
goto(23,-115)
fillcolor('black')
end_fill()
fill_color_patch(32,-133)
begin_fill()
set_start(32,-133, w=1, c='black')
right_rotate(1,140,6)
right_rotate(1,110,4)
left_rotate(3,8,5)
right_rotate(1,80,7)
right_rotate(1,140,3)
left_rotate(3,14,6)
goto(32,-133)
fillcolor('black')
end_fill()
fill_color_patch(39,-135)
begin_fill()
set_start(39,-135, w=1, c='black')
right_rotate(1,30,7)
right_rotate(1,80,3)
left_rotate(3,20,2.2)
right_rotate(1,160,5)
right_rotate(1,60,3)
left_rotate(2,15,3)
goto(39,-135)
fillcolor('black')
end_fill()
fill_color_patch(14,-153)
begin_fill()
set_start(14,-153, w=1, c='black')
right_rotate(1,90,7)
right_rotate(1,130,3.5)
right_rotate(1,60,3)
goto(14,-153)
fillcolor('black')
end_fill()if __name__ =='__main__':
title('世界杯吉祥物拉伊卜Laeeb(公众号:小斌哥ge)')
wide =600
height =500
screensize(wide, height,'#FF0049')
setup(wide+30, height+30,100,50)
shape(name='turtle')
time.sleep(2)# draw_body()# draw_head()# draw_mouth()# draw_eye()# draw_cap()# draw_hair()
draw_football()# draw_clothes()
set_start(1000,1000,1)
done()
代码获取
代码有1000多行,可以用WX关注我,在后台回复关键字“世界杯”获取完整代码。
声明:转载、二创等使用本文代码,请注明出处。
预告:过年前一周左右会更新一个小兔子的绘图视频,敬请关注。期待你的一键三连。
相关阅读
用Python标准库turtle画一只老虎,祝您新年虎虎生威,大吉大利!
版权归原作者 小斌哥ge 所有, 如有侵权,请联系我们删除。