首页 > Python资料 博客日记
【python】绘制春节烟花
2024-02-25 21:00:06Python资料围观165次
一、Pygame库春节烟花示例
下面是一个使用Pygame实现的简单春节烟花效果的示例代码。请注意,运行下面的代码之前,请确保计算机上已经安装了Pygame库。
import pygame
import random
import math
from pygame.locals import *
# 初始化pygame
pygame.init()
# 设置屏幕大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置标题
pygame.display.set_caption('春节烟花')
# 定义烟花参数
firework_speed = 5
firework_radius = 2
firework_explosion_radius = 60
colors = [
(255, 0, 0), # Red
(0, 255, 0), # Green
(0, 0, 255), # Blue
(255, 255, 0), # Yellow
(255, 165, 0), # Orange
(255, 255, 255) # White
]
# 定义Firework类
class Firework:
def __init__(self, x, y, color, exploded=False):
self.x = x
self.y = y
self.color = color
self.exploded = exploded
self.particles = []
def move(self):
if not self.exploded:
self.y -= firework_speed
def explode(self):
if not self.exploded:
for angle in range(0, 360, 5):
dir_x = math.cos(math.radians(angle))
dir_y = math.sin(math.radians(angle))
self.particles.append((self.x, self.y, dir_x, dir_y, self.color))
self.exploded = True
def update(self):
if self.exploded:
for particle in self.particles:
index = self.particles.index(particle)
particle_x, particle_y, dir_x, dir_y, color = particle
particle_x += dir_x * 2
particle_y += dir_y * 2
self.particles[index] = (particle_x, particle_y, dir_x, dir_y, color)
if self.distance(particle_x, particle_y) > firework_explosion_radius:
self.particles.pop(index)
def show(self):
if not self.exploded:
pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), firework_radius)
else:
for particle in self.particles:
particle_x, particle_y, dir_x, dir_y, color = particle
pygame.draw.circle(screen, color, (int(particle_x), int(particle_y)), firework_radius)
def distance(self, x, y):
return math.sqrt((self.x - x) ** 2 + (self.y - y) ** 2)
fireworks = [Firework(random.randint(0, screen_width), screen_height - 10, random.choice(colors))]
# 游戏主循环
running = True
while running:
screen.fill((0, 0, 0)) # use a dark sky background
# 执行事件循环
for event in pygame.event.get():
if event.type == QUIT:
running = False
# 更新和显示烟花
for firework in fireworks:
if not firework.exploded and firework.y < screen_height / 2 + random.randint(-100, 100):
firework.explode()
firework.move()
firework.update()
firework.show()
# 随机发射新的烟花
if random.randint(0, 20) == 1:
fireworks.append(Firework(random.randint(0, screen_width), screen_height - 10, random.choice(colors)))
# 删除已完成的烟花
for firework in fireworks:
if firework.exploded and len(firework.particles) == 0:
fireworks.remove(firework)
pygame.display.flip()
pygame.time.Clock().tick(30) # 控制游戏最大帧率为30fps
pygame.quit()
这个脚本创建了一些简单的烟花效果,它们会随机地在底部生成,并上升到屏幕的一半高度左右时爆炸。
二、在Windows 11上安装Pygame库
在Windows 11上安装Pygame库需要先确保电脑上有Python环境。Pygame是一个用Python语言编写的跨平台的游戏开发库。以下是在Windows 11上安装Pygame的一般步骤:
1. 安装Python:
如果电脑还没有安装Python,可以从Python官网下载安装包安装。地址是:https://www.python.org/downloads/。下载适合Windows的版本,运行安装程序,并确保在安装过程中选中了“Add Python to PATH”这个选项,以便在命令行中使用`python`命令。
2. 打开命令提示符(CMD)或 PowerShell:
安装了Python之后,按下Windows键,输入`cmd`或`PowerShell`,然后选择“命令提示符”或“Windows PowerShell”。确保以管理员身份运行它。
3. 更新pip(可选,但推荐):
虽然这一步不是必需的,但建议将pip更新到最新版本,以确保无缝安装库。在命令提示符或PowerShell中输入以下命令:
python -m pip install --upgrade pip
4. 安装Pygame:
现在,可以通过pip安装Pygame。在命令提示符或PowerShell中输入以下命令:
python -m pip install pygame
注意:如果电脑安装了多个Python版本,使用`python3`或者`py`命令替换`python`。
5. 验证安装:
为了验证Pygame是否成功安装,可以输入以下命令来导入Pygame,并查看其版本号:
python -c "import pygame; print(pygame.ver)"
这样Pygame应该就成功安装在indows 11系统上了。如果在安装过程中遇到问题,可能需要检查一下Python和pip是否正确安装以及是否已添加到系统的环境变量中。
三、turtle模块烟花示例
春节烟花通常是通过图形界面来实现的,下面用Python编写一个简单的烟花效果。我们将使用Python中的`turtle`模块来生成烟花效果。`turtle`是一个简单的图形绘制库,可以很容易地用来制作烟花动画。下面的Python代码演示了如何用`turtle`模块来绘制一个模拟烟花的图形:
import turtle
import random
# 设置屏幕背景
screen = turtle.Screen()
screen.bgcolor("black")
# 创建烟花的绘图对象
firework = turtle.Turtle()
firework.speed(0)
firework.hideturtle()
# 绘制烟花的方法
def draw_firework():
colors = ["red", "yellow", "blue", "green", "orange", "purple", "white"]
# 烟花升空
firework.penup()
firework.goto(random.randint(-200, 200), random.randint(-200, 0))
firework.pendown()
# 烟花爆炸
explode_times = random.randint(5, 15)
for i in range(explode_times):
firework.color(random.choice(colors))
firework.pensize(random.randint(1, 5))
firework.speed(0)
angle = 360 / explode_times
firework.seth(i * angle)
firework.forward(random.randint(20, 150))
firework.backward(random.randint(20, 150))
# 重复绘制烟花
for _ in range(10):
draw_firework()
# 点击屏幕后退出
screen.exitonclick()
确保有Python环境,然后运行这段代码。它将随机地在屏幕上绘制10个不同颜色和大小的烟花效果。可以通过增加循环次数或修改代码来创建更多不同的效果。
由于`turtle`库的性能限制,这个烟花动画的展示效果比较基础和有限。对于更加复杂的烟花动画,通常需要使用其他图形库,比如Pygame,或者在Web上使用JavaScript结合HTML5的Canvas。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj