用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() #含无法拒绝的界面