python写一个樱花特效程序
时间: 2023-08-14 22:05:40 浏览: 46
以下是一个使用 Python 和 Pygame 库实现樱花特效的示例程序:
```python
import pygame
import random
# 初始化 Pygame 库
pygame.init()
# 设置窗口大小和标题
WINDOW_SIZE = (800, 600)
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption("Sakura Effect")
# 加载樱花图片
sakura_img = pygame.image.load("sakura.png")
# 定义樱花粒子类
class SakuraParticle:
def __init__(self, x, y):
self.x = x
self.y = y
self.vx = random.uniform(-1, 1)
self.vy = random.uniform(-1, 1)
self.angle = random.uniform(0, 360)
self.speed = random.uniform(2, 5)
self.scale = random.uniform(0.5, 1.5)
def update(self):
# 更新樱花粒子位置
self.x += self.vx * self.speed
self.y += self.vy * self.speed
self.angle += 1
def render(self, surface):
# 绘制樱花粒子
rotated_img = pygame.transform.rotate(sakura_img, self.angle)
scaled_img = pygame.transform.scale(rotated_img, (int(rotated_img.get_width() * self.scale),
int(rotated_img.get_height() * self.scale)))
surface.blit(scaled_img, (self.x - scaled_img.get_width() / 2, self.y - scaled_img.get_height() / 2))
# 创建樱花粒子列表
sakura_particles = []
for i in range(200):
x = random.randint(0, WINDOW_SIZE[0])
y = random.randint(0, WINDOW_SIZE[1])
sakura_particles.append(SakuraParticle(x, y))
# 游戏主循环
clock = pygame.time.Clock()
while True:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# 更新樱花粒子
for particle in sakura_particles:
particle.update()
# 清空屏幕
screen.fill((255, 255, 255))
# 绘制樱花粒子
for particle in sakura_particles:
particle.render(screen)
# 刷新屏幕
pygame.display.flip()
# 控制游戏帧率
clock.tick(60)
```
在代码中,我们首先加载了樱花图片,并定义了一个 `SakuraParticle` 类来表示樱花粒子。每个樱花粒子都有一个随机的初始位置、速度、旋转角度和缩放比例。在主循环中,我们先更新每个樱花粒子的位置和旋转角度,然后清空屏幕并绘制每个樱花粒子。最后刷新屏幕并控制游戏帧率。
注意:为了运行该程序,需要先在程序所在的目录中放置一个名为 `sakura.png` 的樱花图片。