python 画圣诞树

         有很多初学python想画一个好看的圣诞树给女朋友看,下面我就给大家实现画圣诞树的代码,做出来之后大家分享给自己的朋友。

 实现效果

实现代码: 

 

import turtle
import turtle as t
import random as r
def star():     #画圣诞树顶的大星星
    t.hideturtle()      #隐藏画笔
    t.pensize(2)        #给画笔设置大小
    t.pencolor("gold")  #给画笔设置颜色,'gold'表示金色
    t.up()              #提起画笔,画笔移动时不会画画
    t.forward(5)        #将画笔向前移5个像素(此时画笔方向向右,即向右移动5个像素)
    t.down()            #画笔放下,画笔移动时会产生轨迹
    t.begin_fill()      #给星星填充颜色
    for i in range(5):  #因为是五角星,所以要循环五次画五个角
        t.forward(20)
        t.right(144)
        t.forward(20)
        t.left(72)
    t.fillcolor('yellow')   #设置填充的颜色
    t.end_fill()
    return
def stars():          #画圣诞树上的小星星
    t.hideturtle()       #隐藏画笔
    t.speed(0)           #设置画画速度,0为最快速
    t.pensize(5)         #设置画笔大小
    for i in range(5):   #循环五次画五个角,与画大星星一样
        t.forward(5)
        t.right(144)
        t.forward(5)
        t.left(72)
    return
def stares():           #循环画圣诞树上的小星星
    t.hideturtle()      #隐藏画笔
    x1=-110   #x1赋初值
    x2=110    #x2赋初值
    y1=-40    #y1赋初值
    y2=-15    #y2赋初值
    n=0       #n用来控制在圣诞树两边画星星
    c = ['red', 'orange', 'yellow', 'brown', 'cyan', 'pink', 'blue', 'blueviolet','gold','white']    #星星的颜色,可自定义
    for i in c:   #循环画不同颜色的星星
        t.pencolor(i)     #每次从颜色列表c中按序取一个颜色
        t.up()      #找画星星的位置时要记得提起画笔
        if n%2==0:        #当n为偶数时在圣诞树左边画星星
            t.setx(r.randint(x1,0))
            t.sety(r.randint(y1,y2))
        else:             #当n为奇数时在圣诞树右边画星星
            t.setx(r.randint(0,x2))
            t.sety(r.randint(y1,y2))
        t.down()
        stars()     #开始画星星
        x1+=10      #每次画完记得按圣诞树的层数要将x1,x2减小,y1,y2上移
        x2-=10
        y1+=25
        y2+=25
        n+=1        #n=n+1
def tree(d,s):      #运用递归的方法画圣诞树
    t.hideturtle()              #隐藏画笔
    t.pencolor('limegreen')     #画笔颜色置为绿色,用来画树
    t.pensize(5)                #画笔大小为5
    t.speed(0)                  #最快速度画树(其实挺慢的)
    if d<=0:
        return
    t.forward(s)
    tree(d-1,s*0.8)
    t.right(120)
    tree(d-3,s*0.5)
    t.right(120)
    tree(d-3,s*0.5)
    t.right(120)
    t.backward(s)
def trees():          #画完整的圣诞树
    t.hideturtle()          #隐藏画笔
    t.left(90)              #将画笔向左旋转90度
    t.up()                  #提起画笔
    t.goto(0,-110)          #移动画笔到坐标(0,-110)处开始画树
    t.down()
    t.pencolor('saddlebrown')   #先画树根,将画笔置为棕色
    t.pensize(20)           #树根比较粗,画笔大小设置大一点
    t.forward(50)           #树根长度为50个像素
    t.up()                  #提笔
    t.goto(0,-50)           #将画笔移到(0,-50)处
    t.down()
    tree(15,60)             #调用画树的递归函数,慢慢画树
    t.goto(0,250)           #画完树后,将画笔移到(0,250)的位置,准备画大星星
    t.down()
    t.right(90)             #将画笔向右旋转90度,指向右方,准备画大星星
    star()                  #画大星星
def snow():            #画雪花(全屏)
    t.hideturtle()     #隐藏画笔
    t.pensize(2)       #画笔大小
    t.speed(0)         #画雪花的速度
    for i in range(500):          #循环画500个雪花
        t.pencolor('white')       #雪花是白色的
        t.penup()                 #提笔
        t.setx(r.randint(-1000,1000))     #在画布上随机找点
        t.sety(r.randint(-1000,1000))
        t.pendown()
        snowsize=r.randint(4,10)          #雪花大小
        for i in range(6):            #画雪花(雪花为六瓣,需要循环六次)
            t.forward(int(snowsize))
            t.backward(int(snowsize))
            t.left(60)
def gift():       #画正方体礼物盒
    t.hideturtle()       #隐藏画笔
    t.speed(0)           #画笔速度
    x=40    #礼物盒的长和宽,我设置为正方形礼物盒,长宽高相等
    y=16    #由于是立体图形,宽与长不一样
    for i in range(4):    #以下为画礼物盒的方法(x,y的值可以自行修改)
        t.forward(x)
        t.left(90)
    t.up()
    t.left(45)
    t.forward(y)
    t.right(45)
    t.down()
    for i in range(4):
        t.forward(x)
        t.left(90)
    t.up()
    t.right(135)
    t.forward(y)
    t.down()
    t.left(180)
    t.forward(y)
    t.backward(y)
    t.right(45)
    t.forward(x)
    t.left(45)
    t.forward(y)
    t.backward(y)
    t.left(45)
    t.forward(x)
    t.right(45)
    t.forward(y)
    t.backward(y)
    t.left(135)
    t.forward(x)
    t.right(135)
    t.forward(y)
    t.backward(y)
    t.right(135)
    t.forward(x)
    t.left(90)
def gifts():            #画多个正方体礼物盒
    t.hideturtle()      #隐藏画笔
    t.penup()           #提笔
    t.goto(-180,-150)    #将画笔移到(-180,-150)的位置准备画礼物盒
    t.pendown()
    t.pensize(5)         #画笔大小
    c=['red','orange','yellow','green','cyan','blue','blueviolet']    #礼物盒的颜色
    for i in c:          #循环画不同颜色的礼物盒
        t.up()
        t.forward(40)
        t.down()
        t.pencolor(i)
        gift()
def writes():       #写字:“圣诞快乐!”
    t.pencolor("cyan")      #画笔颜色,天蓝色
    t.hideturtle()          #隐藏画笔
    t.up()
    t.goto(-160,-250)       #从(-160,-250)开始写字
    t.down()
    t.write("Merry Christmas!",font=("Comic Sans MS",30,"bold"))   #开始写字,"Merry Christmas!"为要写的字,"Comic Sans MS"为字体,30为字的大小,bold为粗体(可自行修改要写的字)
def treet(d,s):      #运用递归的方法画圣诞树
    t.hideturtle()              #隐藏画笔
    t.pencolor('limegreen')     #画笔颜色置为绿色,用来画树
    t.pensize(5)                #画笔大小为5
    t.speed(0)                  #最快速度画树(其实挺慢的)
    if d<=0:
        return
    t.forward(s)
    treet(d-1,s*0.8)
    t.right(120)
    treet(d-3,s*0.5)
    t.right(120)
    treet(d-3,s*0.5)
    t.right(120)
    t.backward(s)
if __name__ == '__main__':      #主函数
    '''
    t.bgcolor('black')
    t.up()
    t.goto(0,-110)
    t.down()
    t.left(90)
    treet(10,60)
    t.done()
    '''
    turtle.bgcolor("black")
    turtle.setup(1.0,1.0)
    turtle.title("圣诞树(2023)")
    # turtle.tracer(0)   #直接画完
    t = turtle.Turtle()
    t.screen.delay(0)    #加速画
    trees()         #画圣诞树
    stares()        #画树上的星星
    gifts()         #画礼物盒
    writes()        #写祝福语
    snow()          #下雪(画雪花)

       最后在这里祝大家 Merry Christmas!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值