前言:
画的过程比较慢,整个过程大概六分半。送给喜欢的人建议录屏倍速播放。
该程序是基于Python 3 IDLE环境编写。
1.打开IDLE Shell,按CTRL+N 快捷键 新建文档
2.导入我们所需要的库文件,在本程序中,只需要用到turtle绘图函数和random随机函数。
import turtle as t
import random as r
将导入的turtle 函数 重命名为 t, random 函数重命名为 r
3.创建画布大小和初始化画笔
t.setup(1000,1000) #创建画布大小为宽度为1000,高度为1000
t.speed("fastest")#设置绘画的速度为最快
t.screensize(bg='black')#设置画布的背景色 为 黑色
t.pensize(5)#设置初始的画笔的粗细
4.将所需要画的图进行封装,在此程序中一共封装了 画爱心、画五角星、画树体和画雪花函数
def xingxing(): #画五角星函数
t.pensize(5)
t.pd() #画笔落下,后续动作将会留下笔记
t.rt(90)
t.fd(200)
t.bk(500)
t.rt(55) #这四行代码用于调整五角星的初始方向
t.color("orange", "yellow")#定义最上端星星的颜色,外圈是orange,内部是yellow
t.begin_fill()
for i in range(5):#开始绘画五角星的五个角
t.fd(20)
t.rt(144)
t.fd(20)
t.lt(72)
t.end_fill()#绘制完后,对内部进行上色
t.pu()#画笔抬起,后续动作不会留下笔记
#t.fd(600)
#t.bk(590 )
def drawlove():#绘制爱心函数
# t.pd()
t.pensize(2)#设置画笔的粗细
t.seth(0)#改变画笔绘制方向
#随机选择三个爱心的颜色,概率相等
if r.randint(1,3)==1:
t.color('orange','darksalmon')
elif r.randint(1,3)==2:
t.color('orange','tomato')
else:
t.color('orange','coral')
t.begin_fill()
t.lt(135)
t.fd(22)
t.right(180)#画笔掉头
t.circle(8,-180)
t.backward(8)
t.right(90)
t.forward(8)
t.circle(-8,180)
t.fd(22)
t.end_fill()#绘制完后 上色
# t.pu()
def xuehua(): #绘画雪花函数
t.color("white")#设置画笔的颜色为白色
for i in range(30):#绘画三十朵雪花,位置随机
t.setx(r.randint(-350,350))
t.sety(r.randint(-100,350))
t.pensize(r.randint(1,3))#随机绘画三种雪花的大小
for i in range(6):#根据雪花大小开始绘画雪花
if t.width()== 1:
t.pd()
t.fd(10)
t.bk(10)
t.rt(60)
t.pu()
elif t.width()==2:
t.pd()
t.fd(6)
t.bk(6)
t.rt(60)
t.pu()
else:
t.pd()
t.fd(3)
t.bk(3)
t.rt(60)
t.pu()
def tree(d, s): #绘画树体函数
t.pencolor("green") #设置画笔颜色为绿色
t.pd()
#绘画不同树枝部位的粗细,看起来更加细节
if d>6:
t.pensize(6)
else:
t.pensize(2)
if d <= 0:
return
t.forward(s)
tree(d - 1, s * .8)
t.right(120)
tree(d - 3, s * .5)
t.right(120)
#在绘画枝桠中随机穿插挂树装饰,不同大小、颜色
if r.randint(1,25) == 1:
t.color('red')
t.circle(2)
elif r.randint(1,25) == 2:
t.color('pink')
t.circle(3)
elif r.randint(1,25) ==3:
t.color('tomato')
t.circle(4)
tree(d - 3, s * .5)
t.right(120)
t.backward(s)
t.pu()#完成树体绘画,抬起画笔,避免后续画雪花练笔
5.封装完函数后,开始绘制
xingxing() #画五角星
#画完五角星后调整画笔方向
t.lt(235)
t.bk(500)
tree(15,105)#开始绘画树体
xuehua()#开始绘画雪花
#在所设置的规定区域中随机画爱心
for i in range(20):
a=r.randint(-300,300)
b=r.randint(-450,-400)
t.setx(a)
t.sety(b)
drawlove()
6.最后插入你想要表达的话或祝福语
t.color("dark red","red")#定义字体颜色
#设置英文字绘制位置
t.setx(1)
t.sety(-400)
t.write("Merry Christmas",align ="center",font=("Comic Sans MS",40,"bold"))
#设置中文字绘制位置
t.setx(1)
t.sety(-350)
t.write("圣诞快乐,我亲爱的XX",align ="center",font=("Comic Sans MS",40,"bold"))
最后上效果图:
pick:江美是我对象的名字😀
下面是完整的代码,直接复制粘贴可用:
import turtle as t
import random as r
t.setup(1000,1000) #创建画布大小为宽度为1000,高度为1000
t.speed("fastest")#设置绘画的速度为最快
t.screensize(bg='black')#设置画布的背景色 为 黑色
t.pensize(5)#设置初始的画笔的粗细
def xingxing(): #画五角星函数
t.pensize(5)
t.pd() #画笔落下,后续动作将会留下笔记
t.rt(90)
t.fd(200)
t.bk(500)
t.rt(55) #这四行代码用于调整五角星的初始方向
t.color("orange", "yellow")#定义最上端星星的颜色,外圈是orange,内部是yellow
t.begin_fill()
for i in range(5):#开始绘画五角星的五个角
t.fd(20)
t.rt(144)
t.fd(20)
t.lt(72)
t.end_fill()#绘制完后,对内部进行上色
t.pu()#画笔抬起,后续动作不会留下笔记
#t.fd(600)
#t.bk(590 )
def drawlove():#绘制爱心函数
# t.pd()
t.pensize(2)#设置画笔的粗细
t.seth(0)#改变画笔绘制方向
#随机选择三个爱心的颜色,概率相等
if r.randint(1,3)==1:
t.color('orange','darksalmon')
elif r.randint(1,3)==2:
t.color('orange','tomato')
else:
t.color('orange','coral')
t.begin_fill()
t.lt(135)
t.fd(22)
t.right(180)#画笔掉头
t.circle(8,-180)
t.backward(8)
t.right(90)
t.forward(8)
t.circle(-8,180)
t.fd(22)
t.end_fill()#绘制完后 上色
# t.pu()
def xuehua(): #绘画雪花函数
t.color("white")#设置画笔的颜色为白色
for i in range(30):#绘画三十朵雪花,位置随机
t.setx(r.randint(-350,350))
t.sety(r.randint(-100,350))
t.pensize(r.randint(1,3))#随机绘画三种雪花的大小
for i in range(6):#根据雪花大小开始绘画雪花
if t.width()== 1:
t.pd()
t.fd(10)
t.bk(10)
t.rt(60)
t.pu()
elif t.width()==2:
t.pd()
t.fd(6)
t.bk(6)
t.rt(60)
t.pu()
else:
t.pd()
t.fd(3)
t.bk(3)
t.rt(60)
t.pu()
def tree(d, s): #绘画树体函数
t.pencolor("green") #设置画笔颜色为绿色
t.pd()
#绘画不同树枝部位的粗细,看起来更加细节
if d>6:
t.pensize(6)
else:
t.pensize(2)
if d <= 0:
return
t.forward(s)
tree(d - 1, s * .8)
t.right(120)
tree(d - 3, s * .5)
t.right(120)
#在绘画枝桠中随机穿插挂树装饰,不同大小、颜色
if r.randint(1,25) == 1:
t.color('red')
t.circle(2)
elif r.randint(1,25) == 2:
t.color('pink')
t.circle(3)
elif r.randint(1,25) ==3:
t.color('tomato')
t.circle(4)
tree(d - 3, s * .5)
t.right(120)
t.backward(s)
t.pu()#完成树体绘画,抬起画笔,避免后续画雪花练笔
xingxing() #画五角星
#画完五角星后调整画笔方向
t.lt(235)
t.bk(500)
tree(15,105)#开始绘画树体
xuehua()#开始绘画雪花
#在所设置的规定区域中随机画爱心
for i in range(20):
a=r.randint(-300,300)
b=r.randint(-450,-400)
t.setx(a)
t.sety(b)
drawlove()
t.color("dark red","red")#定义字体颜色
#设置英文字绘制位置
t.setx(1)
t.sety(-400)
t.write("Merry Christmas",align ="center",font=("Comic Sans MS",40,"bold"))
#设置中文字绘制位置
t.setx(1)
t.sety(-350)
t.write("圣诞快乐,我亲爱的XX",align ="center",font=("Comic Sans MS",40,"bold"))