python--圣诞树

用python画一个圣诞树

import turtle as t
import random as r
import pygame

# 初始化pygame
pygame.init()

# 加载背景音乐
pygame.mixer.music.load("./2.mp3") #更改为自己要播放的路径
pygame.mixer.music.play(-1)  # 循环播放

# 定义几个函数
def drawlight():
    # 绘制彩灯
    if r.randint(0, 30) == 0:
        t.color('tomato')
        t.circle(6)
    elif r.randint(0, 30) == 1:
        t.color('orange')
        t.circle(3)
    else:
        linewidth = 5
        t.color('dark green')

def tree(d, s):
    # 绘制树
    if d <= 0:  return
    t.forward(s)
    tree(d - 1, s * .8)
    t.right(120)
    tree(d - 3, s * .5)
    drawlight()
    t.right(120)
    tree(d - 3, s * .5)
    t.right(120)
    t.backward(s)

def xzs():
    # 绘制小装饰物
    for i in range(200):
        a = 200 - 400 * r.random()
        b = 10 - 20 * r.random()
        t.up()
        t.forward(b)
        t.left(90)
        t.forward(a)
        t.down()
        if r.randint(0, 1) == 0:
            t.color('tomato')
        else:
            t.color('wheat')
        t.circle(2)
        t.up()
        t.backward(a)
        t.right(90)
        t.backward(b)

def drawsnow():
    # 绘制雪花
    t.hideturtle()
    t.pensize(2)
    for i in range(200):
        t.pencolor("white")
        t.penup()
        t.setx(r.randint(-350, 350))
        t.sety(r.randint(-100, 350))
        t.pendown()
        dens = 6
        snowsize = r.randint(1, 10)
        for j in range(dens):
            t.forward(int(snowsize))
            t.backward(int(snowsize))
            t.right(int(360 / dens))

n = 100.0
t.pensize(10)
t.speed("fastest")
t.screensize(800, 600, "black")
t.left(90)
t.forward(3 * n)
t.color("orange", "yellow")
t.begin_fill()
t.left(126)

for i in range(5):
    t.forward(n / 5)
    t.right(144)
    t.forward(n / 5)
    t.left(72)

t.end_fill()
t.right(126)

t.color("dark green")
t.backward(n * 4.8)

tree(15, n)
t.backward(n / 2)

xzs()

t.color("dark red", "red")
t.write("圣诞快乐", align="center", font=("Comic Sans MS", 40, "bold"))  #字体可以更改

drawsnow()

t.done()

# 清理pygame
pygame.mixer.music.stop()
pygame.quit()

圣诞树2


import turtle as tu
import tkinter as tk
import random as r
import pygame

word = "圣诞快乐🎄"  # 写字
def christmas():
    tu.setup(1.0, 1.0, None, None)
    tu.screensize(1.0, 1.0)  # 设置画布大小
    tu.bgcolor('black')  # 设置画布颜色
    tu.title("🎄")
    # tu.tracer(0)
    t = tu.Turtle()
    t.speed(0)  # 画笔速度
    # t.screen.delay(0)  #超快画
    t.hideturtle()  # 隐藏画笔
    def tree():  # 圣诞树
        t.pencolor("pink")
        t.pensize(10)
        t.penup()
        t.hideturtle()
        t.goto(0, 150)
        t.showturtle()
        t.pendown()
        t.shape(name="classic")
        t.seth(-120)
        for i in range(10):
            t.forward(12)
            t.right(2)
        t.penup()
        t.goto(0, 150)
        t.seth(-60)
        t.pendown()
        for i in range(10):
            t.forward(12)
            t.left(2)
        t.seth(-150)
        t.penup()
        t.forward(10)
        t.pendown()
        for i in range(5):
            t.forward(10)
            t.right(15)
        t.seth(-150)
        t.penup()
        t.forward(8)
        t.pendown()
        for i in range(5):
            t.forward(10)
            t.right(15)
        t.seth(-155)
        t.penup()
        t.forward(5)
        t.pendown()
        for i in range(5):
            t.forward(7)
            t.right(15)
        t.penup()
        t.goto(-55, 34)
        t.pendown()
        t.seth(-120)
        for i in range(10):
            t.forward(8)
            t.right(5)
        t.penup()
        t.goto(50, 35)
        t.seth(-60)
        t.pendown()
        for i in range(10):
            t.forward(8)
            t.left(5)
        t.seth(-120)
        t.penup()
        t.forward(10)
        t.seth(-145)
        t.pendown()
        for i in range(5):
            t.forward(10)
            t.right(15)
        t.penup()
        t.forward(10)
        t.seth(-145)
        t.pendown()
        for i in range(5):
            t.forward(12)
            t.right(15)
        t.penup()
        t.forward(8)
        t.seth(-145)
        t.pendown()
        for i in range(5):
            t.forward(10)
            t.right(15)
        t.penup()
        t.seth(-155)
        t.forward(8)
        t.pendown()
        for i in range(5):
            t.forward(11)
            t.right(15)
        t.penup()
        t.goto(-100, -40)
        t.seth(-120)
        t.pendown()
        for i in range(10):
            t.forward(6)
            t.right(3)
        t.penup()
        t.goto(80, -39)
        t.seth(-50)
        t.pendown()
        for i in range(10):
            t.forward(6)
            t.left(3)
        t.seth(-155)
        t.penup()
        t.forward(10)
        t.pendown()
        for i in range(5):
            t.forward(8)
            t.right(10)
        t.penup()
        t.forward(8)
        t.seth(-145)
        t.pendown()
        for i in range(7):
            t.forward(8)
            t.right(10)
        t.penup()
        t.forward(8)
        t.seth(-145)
        t.pendown()
        for i in range(7):
            t.forward(7)
            t.right(10)
        t.penup()
        t.forward(8)
        t.seth(-145)
        t.pendown()
        for i in range(7):
            t.forward(7)
            t.right(10)
        t.penup()
        t.forward(8)
        t.seth(-140)
        t.pendown()
        for i in range(7):
            t.forward(6)
            t.right(10)
        t.penup()
        t.goto(-120, -95)
        t.seth(-130)
        t.pendown()
        for i in range(7):
            t.forward(10)
            t.right(5)
        t.penup()
        t.goto(100, -95)
        t.seth(-50)
        t.pendown()
        for i in range(7):
            t.forward(10)
            t.left(5)
        t.penup()
        t.seth(-120)
        t.forward(10)
        t.seth(-155)
        t.pendown()
        for i in range(6):
            t.forward(8)
            t.right(10)
        t.penup()
        t.seth(-160)
        t.forward(10)
        t.seth(-155)
        t.pendown()
        for i in range(6):
            t.forward(8)
            t.right(10)
        t.penup()
        t.seth(-160)
        t.forward(10)
        t.seth(-155)
        t.pendown()
        for i in range(6):
            t.forward(8)
            t.right(10)
        t.penup()
        t.seth(-160)
        t.forward(10)
        t.seth(-160)
        t.pendown()
        for i in range(6):
            t.forward(8)
            t.right(10)
        t.penup()
        t.seth(-160)
        t.forward(10)
        t.seth(-160)
        t.pendown()
        for i in range(6):
            t.forward(8)
            t.right(10)
        t.penup()
        t.seth(-160)
        t.forward(10)
        t.seth(-165)
        t.pendown()
        for i in range(5):
            t.forward(10)
            t.right(11)
        t.penup()
        t.goto(-70, -165)
        t.seth(-85)
        t.pendown()
        for i in range(3):
            t.forward(5)
            t.left(3)
        t.penup()
        t.goto(70, -165)
        t.seth(-95)
        t.pendown()
        for i in range(3):
            t.forward(5)
            t.right(3)
        t.seth(-170)
        t.penup()
        t.forward(10)
        t.pendown()
        t.pendown()
        for i in range(10):
            t.forward(12)
            t.right(2)
        t.penup()
        t.goto(70, -165)
        t.pendown()
        t.seth(-90)
        t.pensize(8)
        t.pencolor("deeppink")
        t.circle(-20, 90)
        t.penup()
        t.goto(30, -185)
        t.pendown()
        t.seth(-180)
        t.pensize(8)
        t.pencolor("deeppink")
        t.forward(40)
        t.penup()
        t.goto(-5, -170)
        t.pendown()
        t.seth(-180)
        t.pensize(8)
        t.pencolor("deeppink")
        t.forward(35)
        def guest(x, y, z):
            t.penup()
            t.goto(x, y)
            t.seth(-z)
            t.pendown()
            for angel in range(5):
                t.forward(10)
                t.right(10)
        def guet(x, y, z):
            t.penup()
            t.goto(x, y)
            t.seth(-z)
            t.pendown()
            for angel in range(5):
                t.forward(10)
                t.left(10)
        def qu(x, y, z):
            t.penup()
            t.goto(x, y)
            t.seth(-z)
            t.pendown()
            for angel in range(5):
                t.forward(6)
                t.right(10)
            t.seth(-150)
            t.forward(20)
        guest(-70, -150, 160)
        guest(100, -150, 160)
        guet(110, -110, 50)
        guest(160, -140, 150)
        qu(80, -120, 180)
        guest(70, -85, 165)
        guest(-40, -85, 165)
        guet(90, -50, 50)
        guest(130, -80, 150)
        t.pencolor("deeppink")
        qu(-40, -60, 180)
        t.pencolor('deeppink')
        qu(80, -30, 180)
        t.pencolor("deeppink")
        qu(40, 10, 180)
        t.pencolor("deeppink")
        guest(-60, 30, 120)
        guest(-20, -20, 150)
        guet(45, 40, 60)
        guest(-30, 40, 170)
        guest(-30, 110, 115)
        guet(40, 90, 60)
        guest(80, 50, 160)
        t.pencolor("red")
        def hdj(x, y):
            t.penup()
            t.goto(x, y)
            t.seth(80)
            t.pendown()
            t.pensize(2)
            t.circle(5)
            t.seth(10)
            t.forward(15)
            t.seth(120)
            t.forward(20)
            t.seth(240)
            t.forward(20)
            t.seth(180)
            t.forward(20)
            t.seth(-60)
            t.forward(20)
            t.seth(50)
            t.forward(20)
            t.seth(-40)
            t.forward(30)
            t.seth(-130)
            t.forward(5)
            t.seth(135)
            t.forward(30)
            t.seth(-60)
            t.forward(30)
            t.seth(-150)
            t.forward(6)
            t.seth(110)
            t.forward(30)
        def uit(x, y):
            t.penup()
            t.goto(x, y)
            t.pendown()
            t.pensize(2)
            t.circle(5)
            t.seth(-10)
            t.forward(15)
            t.seth(90)
            t.forward(15)
            t.seth(200)
            t.forward(15)
            t.seth(160)
            t.forward(15)
            t.seth(-90)
            t.forward(15)
            t.seth(10)
            t.forward(15)
            t.seth(-60)
            t.forward(20)
            t.seth(-180)
            t.forward(5)
            t.seth(110)
            t.forward(20)
            t.seth(-90)
            t.forward(20)
            t.seth(-180)
            t.forward(6)
            t.seth(70)
            t.forward(15)
            t.hideturtle()
        def yut(x, y, z):
            t.penup()
            t.goto(x, y)
            t.pendown()
            t.seth(z)
            for po in range(5):
                t.forward(4)
                t.left(36)
        def ytu(x, y, z):
            t.penup()
            t.goto(x, y)
            t.pendown()
            t.seth(z)
            for kk in range(5):
                t.forward(4)
                t.left(36)
        t.seth(0)
        uit(40, -160)
        hdj(-80, -120)
        yut(-67, -115, 120)
        yut(-86, -123, 150)
        hdj(40, -50)
        yut(52, -45, 130)
        yut(34, -55, 160)
        t.seth(0)
        t.pencolor("pink")
        uit(-20, -60)
        ytu(-4, -60, 100)
        ytu(-20, -60, 120)
        hdj(-30, 20)
        yut(-15, 25, 130)
        yut(-40, 20, 180)
        uit(30, 70)
        ytu(45, 70, 100)
        ytu(30, 70, 120)
        t.pencolor("lightpink")
        t.pensize(5)
        t.penup()
        t.seth(0)
        t.goto(0, 150)
        t.pendown()
        t.circle(10)
        t.seth(-15)
        t.forward(40)
        t.seth(90)
        t.forward(40)
        t.seth(200)
        t.forward(40)
        t.seth(160)
        t.forward(40)
        t.seth(-90)
        t.forward(40)
        t.seth(15)
        t.forward(40)
        t.seth(-70)
        t.pencolor("lightpink")
        t.pensize(4)
        t.forward(40)
        t.seth(-180)
        t.forward(10)
        t.seth(100)
        t.forward(40)
        t.seth(-100)
        t.forward(40)
        t.seth(-180)
        t.forward(10)
        t.seth(70)
        t.forward(40)
        t.penup()
        t.seth(0)
        t.goto(0, 130)
        t.pencolor("lightpink")
        t.pendown()
        def iou(x, y, z):
            t.penup()
            t.goto(x, y)
            t.pencolor("lightpink")
            t.pendown()
            t.seth(z)
            for po in range(10):
                t.forward(4)
                t.left(18)
        t.seth(0)
        iou(35, 145, 100)
        iou(-7, 145, 110)
        t.pencolor("red")
        t.pensize(7)
        t.penup()
        t.goto(-35, 135)
        t.pendown()
        t.seth(-20)
        t.pensize(2)
        t.penup()
        t.goto(-30, -120)
        t.pencolor("white")
        t.pendown()
        t.fillcolor("red")
        t.forward(30)
        t.circle(4, 180)
        t.forward(30)
        t.circle(4, 180)
        t.penup()
        t.goto(-25, -115)
        t.seth(75)
        t.pendown()
        t.begin_fill()
        for i in range(5):
            t.forward(6)
            t.right(20)
        t.seth(-10)
        for i in range(5):
            t.forward(8)
            t.right(15)
        t.seth(145)
        for i in range(5):
            t.forward(5)
            t.left(2)
        t.seth(90)
        for i in range(5):
            t.forward(1)
            t.left(2)
        t.seth(-90)
        for i in range(4):
            t.forward(4)
            t.right(6)
        t.seth(161)
        t.forward(30)
        t.end_fill()
        t.pensize(1)
        t.pencolor("white")
        def koc(x, y, size):
            t.pensize(2)
            t.pencolor("yellow")
            t.penup()
            t.goto(x, y)
            t.pendown()
            t.begin_fill()
            t.fillcolor("yellow")
            for i in range(5):
                t.left(72)
                t.forward(size)
                t.right(144)
                t.forward(size)
            t.end_fill()
        # 星星
        t.seth(-15)
        koc(-120, -70, 10)
        t.seth(10)
        koc(100, -20, 10)
        t.seth(-10)
        koc(10, 40, 10)
        t.seth(30)
        koc(-80, 60, 10)
        koc(100, -150, 10)
        koc(-140, -150, 10)
        koc(20, 120, 10)
        # 袜子
        t.seth(-20)
        t.pensize(2)
        t.penup()
        t.goto(-20, 80)
        t.pencolor("white")
        t.pendown()
        t.fillcolor("red")
        t.forward(25)
        t.circle(4, 180)
        t.forward(25)
        t.circle(4, 180)
        t.penup()
        t.goto(-15, 80)
        t.pendown()
        t.begin_fill()
        t.fillcolor("red")
        t.seth(-120)
        t.forward(20)
        t.seth(150)
        t.forward(5)
        t.circle(7, 180)
        t.forward(15)
        t.circle(5, 90)
        t.forward(30)
        t.seth(160)
        t.forward(18)
        t.end_fill()
        t.penup()
        t.seth(0)
        t.goto(0, 240)
        t.pendown()
        t.pencolor("yellow")
        t.write(word, font=("Comic Sans MS", 40, "bold"))
        t.penup()
        t.seth(0)
        t.goto(100, -251)
        t.pendown()
        t.pencolor("yellow")
        t.write("Merry Christmas To You!", font=("Comic Sans MS", 24, "bold"))
    def snow():  # 画雪花(全屏)
        t.hideturtle()  # 隐藏画笔
        t.pensize(2)  # 画笔大小
        t.screen.delay(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)
    tree()
    snow()
    tu.mainloop()
# 主函数
def love():

    root = tk.Tk()
    root.title('🎄')
    root.resizable(0, 0)
    root.wm_attributes("-toolwindow", 1)
    screenwidth = root.winfo_screenwidth()
    screenheight = root.winfo_screenheight()
    widths = 300
    heights = 100
    x = (screenwidth - widths) / 2
    y = (screenheight - heights) / 2 - 66
    root.geometry('%dx%d+%d+%d' % (widths, heights, x, y))  # 设置在屏幕中居中显示
    tk.Label(root, text='圣诞快乐!', width=32, font=('宋体', 12, 'bold'), anchor='center').place(x=0, y=10)
    def OK():  # 同意按钮
        root.destroy()
        christmas()  # 显示圣诞树
    def NO():  # 拒绝按钮,拒绝不会退出,必须同意才可以退出哦~
        tk.messagebox.showwarning('🎄', '再给你一次机会!')
    def closeWindow():
        tk.messagebox.showwarning('🎄', '嘿嘿,休想')
    tk.Button(root, text='好哦', width=5, height=1, command=OK).place(x=80, y=50)
    tk.Button(root, text='不要', width=5, height=1, command=NO).place(x=160, y=50)
    root.protocol('WM_DELETE_WINDOW', closeWindow)  # 绑定退出事件
    root.mainloop()


if __name__ == "__main__":

    christmas()  # 直接画圣诞树
    # love()   #含无法拒绝的界面

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值