教你轻松学会用PYTHON给对象画圣诞树

前言:

    画的过程比较慢,整个过程大概六分半。送给喜欢的人建议录屏倍速播放。

    该程序是基于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"))

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我Bu秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值