資料內(nèi)容:
一、步驟分析
總的來說,要實(shí)現(xiàn)煙花秀的效果,需要以下幾個(gè)步驟:
1.1 創(chuàng)建一個(gè)類,包含煙花各項(xiàng)粒子的軌跡的操作
1.2 創(chuàng)建一個(gè)類,包含煙花軌跡的各項(xiàng)操作
1.3 創(chuàng)建一個(gè)類,包含煙花相關(guān)的操作
1.4 在主函數(shù)文件中創(chuàng)建一個(gè)窗體
1.5 在窗體上繪制煙花及文字
二、步驟實(shí)現(xiàn)
2.1、前期準(zhǔn)備
在前期我們需要將編程需要的素材準(zhǔn)備好。這里編程平臺(tái)使用的是pycharm,用到的pygame、sys、
random包下面的相關(guān)類和方法已經(jīng)自有的類和方法。
2.2、煙花粒子軌跡類實(shí)現(xiàn)代碼
# 導(dǎo)入包
from pygame.math import Vector2 as vector
from pygame import display, draw, font
"""
粒子軌跡類
"""
class Trail:
# 全局變量
# 粒子顏色
trail_colours = [(45, 45, 45), (60, 60, 60), (75, 75, 75), (125, 125, 125),
(150, 150, 150)]
def __init__(self, n, size, dynamic):
self.pos_in_line = n
self.pos = vector(-10, -10)
self.dynamic = dynamic
# 確定顏色和大小
if self.dynamic:
self.colour = self.trail_colours[n]
self.size = int(size - n / 2)
else:
self.colour = (255, 255, 200)
self.size = size - 2
if self.size < 0:
self.size = 0
# 確定位置
def get_pos(self, x, y):
self.pos = vector(x, y)
# 顯示方法
def show(self, win):
draw.circle(win, self.colour, (int(self.pos.x), int(self.pos.y)),
self.size)
# 煙花更新
def update(win, fireworks):
# 實(shí)現(xiàn)煙花的顯示
for fw in fireworks:
fw.update(win)
if fw.remove():
fireworks.remove(fw)
# 在屏幕上添加文字
snowFont = font.Font("./YuGothM.TTF", 100) # 導(dǎo)入字體文件,并設(shè)置字體
str1 = snowFont.render("元旦快樂", True, (235, 215, 245))
win.blit(str1, (200, 325))
display.update()