发个红包,新年快乐!

原标题:发个红包,新年快乐!

你好, 今天是大年初一,林骥给你拜年了

发个 28的红包🧧

参与方式:点击下面这条视频,点赞并评论新年快乐,关注即可参与抽奖。

我很喜欢这个视频背景音乐的歌词,正好表达了我此刻想说的话:

想对你说声新年快乐

希望你珍惜每个拥有

人生的旅途

越简单越快乐

学会做自己更加洒脱

想对你唱首新年快乐

希望你过想要的生活

让未来不虚度

愿回忆不苦涩

真心地祝福你现在

比从前更快乐

另外,视频中烟花绽放的效果,我是用 Python 来实现的,完整代码如下:

# 导入库

importtkinter astk

fromPIL importImage, ImageTk

fromtime importtime, sleep

fromrandom importchoice, uniform, randint

frommath importsin, cos, radians

#重力变量

GRAVITY = 0.6

# 颜色列表

colors = [ ‘red’, ‘blue’, ‘yellow’, ‘white’, ‘green’, ‘orange’, ‘purple’]

# 为每一个烟花绽放出来的粒子单独构建一个类的对象

classpart:

def__init__(self, cv, idx, total, explosion_speed, x= 0., y= 0., vx= 0., vy= 0., size= 2., color= ‘red’, lifespan= 2, **kwargs) :

# 每个烟花的特定标识符

self.id = idx

# 烟花的绽放x轴

self.x = x

# 烟花的绽放y轴

self.y = y

# 初速度

self.initial_speed = explosion_speed

# x轴速度

self.vx = vx

# y轴速度

self.vy = vy

# 绽放的粒子数

self.total = total

# 已停留时间

self.age = 0

# 颜色

self.color = color

# 画布

self.cv = cv

# create_oval创建一个椭圆,参数为左上x,左上y,右下x,右下y,填满的颜色,该函数返回一个id

self.cid = self.cv.create_oval(x-size, y-size, x+size, y+size, fill=self.color)

# 应该停留时间

self.lifespan = lifespan

# 更新数据,已停留时间增加

defupdate(self,dt):

self.age += dt

# 粒子膨胀,如果停留时间(2s)足够&&膨胀时间(1.2s)足够

ifself.alive andself.expand:

# 粒子的x轴继续膨胀

move_x = cos(radians(self.id* 360/self.total))*self.initial_speed

# 粒子的y轴继续膨胀

move_y = sin(radians(self.id* 360/self.total))*self.initial_speed

self.cv.move(self.cid, move_x, move_y) #根据id把画布上的粒子移动x和y个距离

self.vx = move_x/(float(dt)* 1000)

# 以自由落体坠落,如果只是停留时间足够,说明膨胀到最大了,应该准备下坠

elifself.alive:

# x轴继续膨胀

move_x = cos(radians(self.id* 360/self.total))

# y轴按照重力因素做落体运动

self.cv.move(self.cid,self.vx+move_x,self.vy+GRAVITY*dt)

# 更新一下y轴

self.vy += GRAVITY*dt

# 如果粒子的生命周期已过,就将其移除

elifself.cid isnotNone:

# 删除该粒子对象

cv.delete(self.cid)

self.cid= None

# 定义膨胀效果的时间帧

defexpand(self):

# 膨胀时间小于1.2s

returnself.age <= 1.2

# 检查粒子是否仍在生命周期内,已停留时间是不是比应该停留时间短

defalive(self):

returnself.age<=self.lifespan

# 烟花模拟,通过递归调用来在画布上重复发出新的烟火

defsimulate(cv):

# 函数返回自1970年后经过的浮点秒数,精确到小数点后6位

t = time

# 爆炸点列表–烟花列表

explode_points = []

# 随机生成一个int n, 10<=n<=100

wait_time = randint( 10, 100)

# 爆炸的个数是6~10

numb_explode = randint( 6, 10)

# 为所有模拟烟花绽放的全部例子创建一列列表,遍历爆炸的个数

forpoint inrange(numb_explode):

# 这是每个点的爆炸粒子列表

objects = []

# 每个点的爆炸x轴

x_cordi = randint( 50, 550)

# 爆炸y轴

y_cordi = randint( 50, 150)

# 随机生成一个float speed,0.5<=speed<1.5

speed = uniform( 0.5, 1.5)

# 随机生成一个float size,0.5<=size<3

size = uniform( 0.5, 3)

# choice是python内置函数,随机返回元组,列表,或字符串的一个成员

color = choice(colors)

# 爆炸的绽放速度也要随机出来

explosion_speed = uniform( 0.2, 1)

# 爆炸出来的粒子数半径也随机

total_particles = randint( 10, 50)

# 同一个烟花爆炸出来的粒子的大小,速度,坐标都是相同的

fori inrange( 1,total_particles):

# 把上述参数带入,但他们每个粒子的生存时间是自己独立的

r = part(cv, idx=i, total=total_particles, explosion_speed=explosion_speed, x=x_cordi, y=y_cordi,

vx=speed, vy=speed, color=color, size=size, lifespan=uniform( 0.6, 1.75))

# 添加进粒子列表里

objects.append(r)

# 把该粒子列表添加进烟花列表里

explode_points.append(objects)

#先把时间置0

total_time = .0

# 在1.8秒时间帧内保持更新

whiletotal_time < 1.8:

# 让画面暂停0.01s

sleep( 0.01)

# 刷新时间

tnew=time

# 时间等于新时间,与上次时间间隔为tnew-t

t,dt = tnew,tnew-t

# 遍历烟花列表

forpoint inexplode_points:

# 遍历烟花里的粒子列表

foritem inpoint:

# 更新时间

item.update(dt)

# 刷新页面

cv.update

# 为上面的while循环增加时间

total_time += dt

# 将组件置于其他组件之后,就是放在最顶层,覆盖下面的,这里递归第哦啊用了自己,形成新的一轮爆炸

root.after(wait_time, simulate, cv)

defclose(*ignore):

# 打开模拟循环并关闭窗口

globalroot

root.quit

root = tk.Tk

# 绘制一个画布

cv = tk.Canvas(root, height= 600, width= 700)

# 打开一个背景图片

image = Image.open( “shanghai.jpeg”)

photo = ImageTk.PhotoImage(image)

# 在画板上绘制一张图片

cv.create_image( 0, 0, image=photo, anchor= ‘nw’)

# 把cv添加进去

cv.pack

root.protocol( “WM_DELETE_WINDOW”, close)

# 在0.1s后才开始调用stimulate,生成一轮烟花绽放效果

root.after( 100, simulate, cv)

# 执行root,生成窗口

root.mainloop

原始代码来源于网络,我调整了其中的一些格式、注释和参数,你可以替换成自己喜欢的图片背景,也可以调整烟花绽放的颜色和效果等参数。

最后的话

无论学习什么,我喜欢多想一想,还能应用在什么地方。

把 Python 用于新年快乐的祝福,让我觉得这个新年变得更加有趣。

在平凡的生活中,用积极乐观的心态去面对,努力把当下的事情做好,我认为这样的生活会 更有意义

☟☟☟☟☟☟

520,用 Python 表达爱

关注林骥的公众号,更多干货早知道。

责任编辑:

Thenews.cc