【python】绘制春节烟花

一、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 = xself.y = yself.color = colorself.exploded = explodedself.particles = []def move(self):if not self.exploded:self.y -= firework_speeddef 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 = Truedef update(self):if self.exploded:for particle in self.particles:index = self.particles.index(particle)particle_x, particle_y, dir_x, dir_y, color = particleparticle_x += dir_x * 2particle_y += dir_y * 2self.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 = particlepygame.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)  # 控制游戏最大帧率为30fpspygame.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_timesfirework.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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot配置文件优先级

1、bat文件启动java程序 java -Dmmmqqq -Dfile.encodingUTF-8 -jar ruoyi-admin.jar --mmmiii --llllll 2、配置类型 程序参数Program arguments : --mmmiii 单个属性值&#xff0c;可以从String[] args读取到&#xff0c;放在jar包命令后面 VM参数VM options :一般以-D …

如何让 Pages 文字分为两栏或更多栏?

通常一份文件都是由上往下仅有「一栏」而已&#xff0c;但在某些情况的排版&#xff0c;我们需要两栏甚至三栏的设计&#xff0c;在Pages 要如何做到呢&#xff1f;来看看吧。 将 Pages 文件改为双栏式设计 点一下「格式」>「布局」&#xff0c;就可以看到预设的「直栏」数…

C++:哈希表的哈希桶(模拟实现)

在这里不赘述哈希表的相关性质有兴趣的参考线性探测&#xff0c;这里直接贴代码 template<class T>struct HashNode{T _data;HashNode<T>* _next;HashNode(const T& data):_data(data), _next(nullptr){}};template<class K, class T, class KOFV>class …

SpringMVC-请求

一、引子 我们在上一篇SpringMVC-响应中提到了如何给客户端返回响应&#xff0c;那么本节来介绍一下如何承接客户端的响应。 二、接收参数 &#xff08;1&#xff09;使用RequestParam注解&#xff1a; RequestMapping(value "/example", method RequestMethod…

LeetCode-第2469题=温度转换

1.题目描述 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度&#xff0c;以 摄氏度&#xff08;Celsius&#xff09;为单位。 你需要将摄氏度转换为 开氏度&#xff08;Kelvin&#xff09;和 华氏度&#xff08;Fahrenheit&#xff09;&#xff0c;并以数组 ans …

【AI数字人-论文】GeneFace++

文章目录 前言pipelinePitch-Aware Audio-to-MotionLandmark LLELLELandmark LLE Instant motion-to-video rendering结果对比 前言 为了提高预测的面部关键点序列的长期时间一致性和自然度&#xff0c;我们提出了一个Pitch-Aware Audio-to-Motion音高感知的音频到动作模块。具…

Spring是怎么解决循环依赖的

首先先解释一下什么叫循环依赖 循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环.比如A依赖于B,B依赖于A 循环依赖在spring中是允许存在的,spring框架依据三级缓存已经解决了大部分的循环依赖 一级缓存:单例池,缓存已经经历了完整的…

Java字符串(包含字母和数字)通用排序

说明&#xff1a;本文章是之前查到的一篇安卓版的&#xff0c;具体原文路径忘记了。稍微改了一点&#xff0c;挺符合业务使用的&#xff01; 一、看代码 /*** 包含数字的字符串进行比较&#xff08;按照从小到大排序&#xff09;*/private static Integer compareString(Stri…

Character包装类常用方法(Java)

Character包装类常用方法 Character 类是 char 基本数据类型的包装类&#xff0c;用于提供对字符数据的操作和封装。 1. isDigit(char ch) 方法示例&#xff1a; 判断指定字符是否是一个数字&#xff08;0-9&#xff09;。返回值为 boolean 类型。 char ch1 5; char ch2 …

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于CNN-LST…

vue3 之 商城项目—layout静态模版结构搭建

layout—模块静态模版搭建 一般情况下我们会有nav区域&#xff0c;header区域&#xff0c;二级路由出口区域以及footer区域&#xff0c;如图 我们在开发的时候先把大模块搭建起来&#xff0c;再一步一步填充小模块 在layout下建文件&#xff0c;目录如下 在index.vue中把上…

基于springboot+vue+mysql员工宿舍管理系统

技术栈 jdk8springboot vueelement-plusMySQL 包含功能点 管理员端 登录员工管理宿舍管理留言板管理物品报修管理公告管理 员工端 登录首页个人中心物品报修留言板 功能截图(部分) 管理员 管理员登录 员工管理 宿舍管理 物品报修管理 公告管理 留言管理 员工 员工登录…

数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205)

数据库管理145期 2024-02-05 数据库管理-第145期 最强Oracle监控EMCC深入使用-02&#xff08;20240205&#xff09;1 监控方式2 度量配置3 阻塞4 DG监控总结 数据库管理-第145期 最强Oracle监控EMCC深入使用-02&#xff08;20240205&#xff09; 作者&#xff1a;胖头鱼的鱼缸&…

LeetCode、216. 组合总和 III【中等,组合型枚举】

文章目录 前言LeetCode、216. 组合总和 III【中等&#xff0c;组合型枚举】题目类型与分类思路 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖…

769933-15-5,Biotin aniline,用来标记和检测细胞膜上的特定蛋白质

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;769933-15-5&#xff0c;Biotin aniline&#xff0c;生物素苯胺 一、基本信息 产品简介&#xff1a;Biotin aniline, also known as Biotin aniline, is a molecular probe with strong reactivity. Its uniqueness…

Java设计模式-责任链模式

责任链模式 一、概述二、结构三、案例实现四、优缺点五、源码解析 一、概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门…

c# List集合操作帮助类

public class ListHelper { #region 赋值转换 /// <summary> /// A实体转换成B实体 /// </summary> /// <typeparam name"T"></typeparam> /// <typeparam name"K"></typep…

代码随想录-背包问题

01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 二维dp数组01背包 定义&#xff1a;dp[i][j] 表示从下标为[0-i]的物品里任意取…

TreeSet 集合

TreeSet 集合 1. 概述2. 方法3. 遍历方式4. 两种排序方式4.1 默认排序规则/自然排序4.1.1 概述4.1.2 compareTo()方法4.1.3 代码示例14.1.4 代码示例2 4.2 比较器排序4.2.1 概述4.2.2 compare()方法4.2.3 代码示例14.2.4 代码示例2 4.3 排序方式的对比 5. 注意事项 文章中的部分…

LeetCode、62.不同路径的数目(一)【简单,动态规划或递归】

文章目录 前言LeetCode、62.不同路径的数目(一)【简单&#xff0c;动态规划或递归】题目描述与分类思路思路1&#xff1a;动态规划思路2&#xff1a;递归实现简洁写法补充&#xff1a;2024.1.30 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、…