python和pygame实现烟花特效
新年来临之际,来一个欢庆新年烟花祝贺,需要安装使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/
效果图及源码
先看效果图:
源码如下:
import pygame import random import math # 初始化pygame pygame.init() # 设置窗口大小 width, height = 800, 600 screen = pygame.display.set_mode((width, height)) # 定义颜色 black = (0, 0, 0) red = (255, 0, 0) # 定义烟花粒子 class Particle: def __init__(self, x, y, color): self.x = x self.y = y self.color = color self.radius = random.randint(2, 4) self.angle = random.uniform(0, 2 * math.pi) self.speed = random.uniform(1, 3) self.gravity = 0.1 def move(self): self.x += math.cos(self.angle) * self.speed self.y += math.sin(self.angle) * self.speed + self.gravity self.radius -= 0.1 # 粒子逐渐变小 def draw(self): pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), int(self.radius)) # 定义烟花 class Firework: def __init__(self, x, y): self.x = x self.y = y self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) self.particles = [] self.exploded = False self.explode_height = random.randint(100, 400) # 设置爆炸高度 self.speed = random.randint(5, 10) # 设置上升速度 self.angle = math.pi / 2 # 设置上升角度为垂直向上 def launch(self): if not self.exploded: self.y -= self.speed * math.sin(self.angle) if self.y <= self.explode_height: # 到达设定高度后爆炸 self.explode() self.exploded = True def explode(self): for _ in range(100): # 爆炸产生的粒子数量 self.particles.append(Particle(self.x, self.y, self.color)) def draw(self): if not self.exploded: pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), 5) else: for particle in self.particles: particle.move() particle.draw() #显示文字 #font = pygame.font.Font(None, 36) # 设置字体和大小 font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 36) text = font.render("龙年快乐", True, red) # 渲染文本 text_rect = text.get_rect(center=(width // 2, height // 2)) # 获取文本的矩形区域 # 主循环 fireworks = [] clock = pygame.time.Clock() running = True while running: clock.tick(30) # 控制帧率 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill(black) # 绘制文本 screen.blit(text, text_rect) # 发射烟花 if random.randint(1, 20) == 1: # 控制烟花发射频率 fireworks.append(Firework(random.randint(0, width), height)) # 更新烟花并绘制 for firework in fireworks[:]: firework.launch() firework.draw() if firework.exploded and all(p.radius <= 0 for p in firework.particles): fireworks.remove(firework) pygame.display.flip() pygame.quit()
讯享网
pygame在屏幕上显示字体的方法说明
使用pygame.font.Font函数来设置字体和大小,然后使用font.render函数将文本渲染为图像。最后,使用screen.blit函数将渲染好的文本图像绘制到屏幕上。
pygame.font.Font(None, 字体大小)使用系统默认字体,可能不支持汉字。None代表系统默认字体,如pygame.font.Font(None, 36),可能不支持汉字。怎么办?使用pygame.font. Font(“含路径的字体名”,字体大小),指定支持汉字的字体,如:pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 36),simsun.ttc是宋体,字体的路径和名称。在windows中如何确定字体的路径和名称呢?参见下图


改进:添加背景音乐,增添欢乐的气氛
在“# 主循环”部分前,添加如下代码
# 载入背景音乐
pygame.mixer.music.load("踩着开心的节奏 - 橙光音乐.mp3")
pygame.mixer.music.set_volume(0.5) # 设置音量
pygame.mixer.music.play(-1) # 播放背景音乐,-1表示循环播放
其中,pygame.mixer.music.load函数加载背景音乐文件(例如名为"踩着开心的节奏 - 橙光音乐.mp3"文件,并将其放在与代码文件相同的目录下),然后使用pygame.mixer.music.set_volume函数设置音量大小(范围为0.0-1.0)。最后,使用pygame.mixer.music.play函数播放背景音乐,参数-1表示循环播放。
请你使用自己背景音乐文件替换"踩着开心的节奏 - 橙光音乐.mp3",只要保证正确命名文件名和路径即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/18411.html