前言: 美酒一杯让人醉,温馨陪伴浪漫随;雪花片片惹人爱,烦恼忧伤全不见;字里行间藏真情,文短情深送心愿:圣诞佳节快来到,祝大家永远开心幸福!
Hello大家好,我是Dream。 圣诞节马上到了,一些朋友问我想送女朋友和男朋友们圣诞节礼物,但是也没想到啥好点子,作为一名程序员,圣诞节我们就应该送出专属于我们程序员的浪漫。作为我的粉丝朋友们,我不允许大家还没有专属于自己的圣诞树!于是我给大家准备了两款圣诞树,快来看看有没有你喜欢的吧~

本文目录:

  • 一、背景故事
    • 圣诞树需求
    • 源码分享
  • 二、HTML版圣诞树
  • 三、Python版圣诞树
    • 需要用到的模块:
    • 1.基础圣诞树
    • 2.落叶效果
    • 3.雪花特效
    • 4.背景音乐
    • 5.浪漫弹窗
    • 6.署名制作
  • 四、源码分享
  • 五、美好祝愿

一、背景故事

圣诞节是全家团聚、共进圣诞晚餐、互赠礼品的时刻。圣诞树是节日的必需之物,一般用小枞树或者松树,树枝上挂满装饰品、礼物、彩灯,树顶上要有一颗明亮的星,以指示道路。
雪花飘舞着祥和,钟声传递着喜悦,苹果注满了平安,糖果填满了甜蜜,颂歌洋溢着快乐,短信充满了我最真挚的祝福。圣诞节,愿大家快乐悠然,幸福安康!

圣诞树需求

马上不就到圣诞节了嘛,我看到朋友圈里很多小伙伴再纷纷炫耀自己收到的专属圣诞树,也有小伙伴私信我,说还没有自己的圣诞树!!!

作为我的粉丝朋友们,我不允许大家还没有专属于自己的圣诞树!我要让大家收到最特别最美丽的圣诞树,于是我给大家准备了两款圣诞树:
HTML版动态圣诞树
+
Python版落叶+雪花+背景音乐+浪漫弹窗 五合一版圣诞树! 话不多说,先看效果:


哎嘿嘿,是不是非常的nice呀!喜欢啊一款啊,我把源码准备好啦,大家自取就行了,快去给最爱的人送上圣诞祝福吧!

源码分享

所有源码均在此公众号内:关注此公众号,回复 圣诞树获取源码,快点击我吧:人生苦短我用Pythons

二、HTML版圣诞树


代码有些长,大家根据自己需要直接修改文字内容就好,把文件后缀改为.html就可以直接运行啦!
并且我在其中加入了轮番图,你可以按照自己的需求写上自己想对她说的话:

这里是程序代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"><html><head><title> 宝贝 圣诞节快乐!</title><meta charset="utf-8" ><style>body {margin: 0;background-image: url("http://all4desktop.com/data_images/1280%20x%20800/4227335-waiting-for-the-xmas.jpg");background-color: #111;background-position: 50% 50%;background-size: cover;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}其余代码太长放到源码里啦,大家需要自取

三、Python版圣诞树

需要用到的模块:

import turtle as timport randomimport pygameimport threadingimport timeimport tkinter as tk

这是我们要用到的一些基础库,没有安装的小伙伴们可以安装一下,要求编译器是Python3的环境。基础操作还不会的小伙伴看这里:❤️Python入门这些你必须要知道!
我用的是Pycharm,对Pycharm不懂的小伙伴look这个:全网首发,一篇文章带你走进pycharm的世界

1.基础圣诞树

画主体树的部分看似有些麻烦,但只要你把其中的几个循环看明白了就行了,无非就是几个函数重复控制画笔移动!

t.screensize(bg='black')# 定义背景颜色,可以自己换颜色def loving_heart(r):l = 2 * rt.left(45)t.forward(l)t.circle(r, 180)t.right(90)t.circle(r, 180)t.forward(l)# 树函数(递归)def tree(d, s):if d <= 0:returnt.forward(s)tree(d - 1, s * .8)t.right(120)tree(d - 3, s * .5)t.right(120)tree(d - 3, s * .5)t.right(120)t.backward(s)# 回退函数# 画爱心部分t.penup()t.goto(0, 200)# 设置起点位置t.pendown()t.pencolor('red')# 设置画笔颜色t.color('red')t.begin_fill()# 对图形进行填充loving_heart(20)# 执行画爱心函数t.end_fill()# 画树部分n = 100t.speed(0)# t.Turtle().screen.delay(0)t.right(225)t.color("dark green")t.backward(n * 4.8)tree(15, n)t.backward(n / 5)

2.落叶效果

在这里我使用了random函数,通过判断条件控制了两种颜色,大家也可以加入更多的颜色进行绘制落叶:

 if random.randint(1, 2) == 1:t.color('tomato') else:t.color('wheat')

也可以使其变成不同的形状,也没必要全是圆形,时间问题我就没改,大家感兴趣可以再改一下,也可以使落叶在圣诞树上,不用全在圣诞树下:t.circle(4)

# 绘制落叶for i in range(200):a = 200 - 400 * random.random()b = 10 - 20 * random.random()t.speed(0)t.up()t.forward(b)t.left(90)t.forward(a)t.down()if random.randint(1, 2) == 1:t.color('tomato')else:t.color('wheat')t.circle(4)t.up()t.backward(a)t.right(90)t.backward(b)

3.雪花特效

这里我做了很详细的介绍,大家可以参考这个来具体看,还是很好看的:

# 绘制雪花def drawsnow():# 定义画雪花的方法t.speed(0)t.ht()# 隐藏笔头,ht=hideturtlet.pensize(2)# 定义笔头大小for i in range(200):# 画多少雪花t.pencolor("white")# 定义画笔颜色为白色,其实就是雪花为白色t.pu()# 提笔,pu=penupt.setx(random.randint(-350, 350))# 定义x坐标,随机从-350到350之间选择t.sety(random.randint(-100, 350))# 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始t.pd()# 落笔,pd=pendowndens = 6# 雪花瓣数设为6snowsize = random.randint(1, 10)# 定义雪花大小for j in range(dens):# 就是6,那就是画5次,也就是一个雪花五角星# t.forward(int(snowsize))#int()取整数t.fd(int(snowsize))t.backward(int(snowsize))# t.bd(int(snowsize))#注意没有bd=backward,但有fd=forward,小bugt.right(int(360 / dens))# 转动角度drawsnow()

4.背景音乐

这里使用Pygame模块中的mixer来控制音乐的播放,需要导入本地音乐路径,然后就可以啦!这样会使整个的绘制过程更加浪漫有趣!

file=r'薛之谦 - 迟迟.mp3'# 音乐的路径pygame.mixer.init()# 初始化track = pygame.mixer.music.load(file)# 加载音乐文件pygame.mixer.music.play()# 开始播放音乐

5.浪漫弹窗

这里使用了tkinter模块来进行小弹窗的绘制,最后是用for循环来实现弹窗的重复性和随机性,这也是我觉得最大的创新之处吧!惊喜重重,满满心意与浪漫,哈哈哈。

# 弹窗制作def dow():window = tk.Tk()width = window.winfo_screenwidth()height = window.winfo_screenheight()a = random.randrange(0, width)b = random.randrange(0, height)window.title('圣诞节快乐')window.geometry("200x50" + "+" + str(a) + "+" + str(b))tk.Label(window, text='圣诞节快乐!',# 标签的文字 bg='pink',# 背景颜色 font=('..', 17),# 字体和字体大小 width=18, height=2# 标签长宽 ).pack()# 固定窗口位置window.mainloop()threads = []for i in range(100):# 需要的弹框数量t = threading.Thread(target=dow)threads.append(t)time.sleep(0.01)threads[i].start()

6.署名制作

最后我又简单的加上了自己的署名,算是对自己产权的一种保护吧。虽然没啥用,你们也肯定会给我去掉,但我不管,这就是一种仪式感嗷!

# 写下署名t.color("red")# 填充颜色t.up()# 抬笔t.goto(170,-200)t.down()# 落笔t.write("Created:是Dream呀", font=("宋体", 18, "normal"))t.ht()# t.done()t.hideturtle()

四、源码分享

源码来喽:
所有源码均在此公众号内:关注此公众号,回复 圣诞树获取源码,快点击我吧:人生苦短我用Pythons

五、美好祝愿

希望大家在圣诞节都可以和喜欢的人在一起,送上那棵专属于她or他的圣诞树!天天开心,好好生活,我一直都在哟~(有任何问题的话,欢迎评论区或者私信我嗷,我都会看的!)

好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~

最后,有任何问题,欢迎关注下面的公众号,获取第一时间消息、作者联系方式及每周抽奖等多重好礼! ↓↓↓