亲爱的读者们,今天我们要讨论,python绘制烟花特定爆炸效果 python炫酷烟花表白源代码,一起探索吧!
一、内容概述
本文同之前的飞机大战一样,面向python3的初学者python期末总结怎么写,python总结报告1000字。在这篇文章中,我们通过pygame、math、random三个包提供的内容实现满屏幕的烟花绽放,烟花会从屏幕最底端发射,沿着直线,并在随机位置发生爆炸,爆炸后,会在爆炸位置产生众多烟花颗粒,这些烟花颗粒会渐渐消失.
二、最终代码及成果展示
最终代码
import pygame
import random
import math
class Firework():
def __init__(self, x, y, screen):
self.screen = screen
self.start_x = x
self.start_y = y
self.cur_x = x
self.cur_y = y
self.color = (random.randint(0,255), random.randint(0,255), random.randint(0,255))
def draw(self):
.circle(self.screen, self.color, (self.cur_x, self.cur_y), 5)
def move_up(self):
self.cur_y -= 5
class Particle():
def __init__(self, x, y, screen):
self.x = x
self.y = y
self.screen = screen
self.color = (random.randint(0,255), random.randint(0,255), random.randint(0,255))
self.speed = random.uniform(1, 3)
self.angle = random.uniform(0, 2 * )
self.radius = random.randint(2, 4)
= random.randint(10, 20) #决定烟花颗粒存活的时间
def move(self):
self.x += self.speed * (self.angle)
self.y += self.speed * (self.angle)
-= 1
def draw(self):
.circle(self.screen, self.color, (int(self.x), int(self.y)), self.radius)
def main():
()
screen = pygame.display.set_mode((800,600))
clock = .Clock()
fireworks = []
particles = []
while True:
for event in ():
if == :
()
fireworks.append(Firework(random.randint(0,800), 600, screen))
((0,0,0))
for f in fireworks:
f.draw()
f.move_up()
if random.randint(1, 100) > 96:
for _ in range(random.randint(50,100)):
particles.append(Particle(f.cur_x, f.cur_y, screen))
fireworks.remove(f)
for p in particles:
p.draw()
p.move()
if p.life <= 0:
particles.remove(p)
()
(60) # 控制刷新率
main()
三、代码详解
首先我们引入三个必要的包
import pygame
import random
import math
然后,我们定义了一个最重要的类,及决定烟花颗粒的类,在Particle类中,最为重要的是life属性,通过调节life的random范围,可以随机决定烟花颗粒的存活时间;radius属性决定烟花颗粒的大小,其余属性一看就懂
class Particle():
def __init__(self, x, y, screen):
self.x = x
self.y = y
self.screen = screen
self.color = (random.randint(0,255), random.randint(0,255), random.randint(0,255))
self.speed = random.uniform(1, 3)
self.angle = random.uniform(0, 2 * )
self.radius = random.randint(2, 4)
= random.randint(10, 20) #决定烟花颗粒存活的时间
def move(self):
self.x += self.speed * (self.angle)
self.y += self.speed * (self.angle)
-= 1
def draw(self):
.circle(self.screen, self.color, (int(self.x), int(self.y)), self.radius)
这个类用于生成烟花本身
class Firework():
def __init__(self, x, y, screen):
self.screen = screen
self.start_x = x
self.start_y = y
self.cur_x = x
self.cur_y = y
self.color = (random.randint(0,255), random.randint(0,255), random.randint(0,255))
def draw(self):
.circle(self.screen, self.color, (self.cur_x, self.cur_y), 5)
def move_up(self):
self.cur_y -= 5
最后,我们定义主函数,并在主函数中实现代码循环,完成最主要部分
def main():
()
screen = pygame.display.set_mode((800,600))
clock = .Clock()
fireworks = []
particles = []
while True:
for event in ():
if == :
()
fireworks.append(Firework(random.randint(0,800), 600, screen))
((0,0,0))
for f in fireworks:
f.draw()
f.move_up()
if random.randint(1, 100) > 96:
for _ in range(random.randint(50,100)):
particles.append(Particle(f.cur_x, f.cur_y, screen))
fireworks.remove(f)
for p in particles:
p.draw()
p.move()
if p.life <= 0:
particles.remove(p)
()
(60) # 控制刷新率
原文地址1:https://blog.csdn.net/wahzx/article/details/133799541
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099