圣诞节怎么能缺少圣诞树呢?Python+HTML打造专属于你的圣诞树

news/2024/11/19 21:22:50/

前言: 美酒一杯让人醉,温馨陪伴浪漫随;雪花片片惹人爱,烦恼忧伤全不见;字里行间藏真情,文短情深送心愿:圣诞佳节快来到,祝大家永远开心幸福!
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 t
import random
import pygame
import threading
import time
import 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 = 100
t.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他的圣诞树!天天开心,好好生活,我一直都在哟~💘💘💘(有任何问题的话,欢迎评论区或者私信我嗷,我都会看的!)

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

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


http://www.ppmy.cn/news/5536.html

相关文章

【键盘的自动弹出和自动隐藏 Objective-C语言】

一、键盘的自动隐藏 1.点完“计算”按钮之后,键盘怎么才能自动隐藏 2.首先,键盘弹回去,这里有一个概念,叫做“第一响应者”,first responder 什么叫做第一响应者呢 当我去点击第一个文本框的时候 是不是由这个文本框叫出这个键盘啊 当我去点击第二个文本框的时候 是…

论文笔记Point·E: A System for Generating 3D Point Clouds from Complex Prompts

之前的文本生成3D模型的方法生成一个模型需要多块GPU跑好几个小时&#xff0c;该文章提出的方法生成一个3D模型只需要单GPU1-2分钟。 该文章生成的3D模型的质量并不是当下最好的&#xff0c;但是生成速度很快&#xff0c;因此在现实中很有意义。 从文本生成3D模型的过程分为三…

Linux文件系统

文章目录什么是文件系统认识磁盘磁盘盘面结构LBA寻址方式扇区和磁盘I/O文件系统的具体分析文件系统的分治思想Linux文件系统结构图inodestat命令文件名的作用目录文件创建/删除文件&#xff0c;内核做了什么软硬链接什么是文件系统 前面我们所讲的文件都是内存级别的。也就是这…

RTOS多任务切换实现

实现任务需要的基础知识 1、程序内部细节 通过分析C语言程序的编码会发现程序都是一些指令和数据。 什么是程序&#xff1f; 指令运行过程中的数据 2、常用汇编指令 汇编指令详解 3、ARM架构过程调用标准AAPCS 传参&#xff1a; 通过r0-r3传递&#xff0c;多于4个参数的部…

服务的消费方式和服务熔断

目录 1. 服务消费方式 1.1 RestTemplate 1.2 feign 2. 服务熔断&#xff08;降级&#xff09; 2.1 在微服务架构中服务熔断的必要性 健康的微服务集群&#xff1a; ​编辑 出现故障&#xff1a; ​编辑 系统雪崩&#xff1a; ​编辑 2.2 hystrix 2.3 hystrix的使用…

5G网络及安全能力开放技术研究

【摘 要】首先介绍了5G网络能力开放架构,分析了基于网络切片、多接入边缘计算(MEC)技术实现能力开放的原理,提出了5G安全能力开放的需求及架构,然后给出了5G网络及安全能力开放的接口安全实现方案,最后展望了5G安全增强技术的发展趋势。 【关键词】5G安全;能力开放;网…

企业从哪里开始构建弹性 IT 基础架构

混合工作模式扩大了工作范围&#xff0c;增加了 IT 团队的负担&#xff0c;因为他们需要在面对增加的攻击面时保持弹性。入侵企业的 IT 基础架构只需要一个受损的身份。 什么是企业标识&#xff1f; 这些是用户名、密码、网络、端点、应用程序等&#xff0c;充当业务敏感信息…

基于SPN的专线业务承载方案

【摘 要】5G时代,垂直行业专线业务是一片尚待开发的蓝海,是未来运营商利润来源的新引擎,但现网PTN只能提供业务间的软隔离,无法满足uRLLC场景的业务承载需求。首先描述了现有承载技术难以满足低时延、高可靠业务需求的现状,然后分别对普通分组、确定性分组,以及Sub-5G三…