当前位置: 首页 > news >正文

jsp动态网站开发实践教程电子档网站买卖交易平台

jsp动态网站开发实践教程电子档,网站买卖交易平台,web界面设计工具,wordpress文章目录修改Pygame 绘制烟花的基本原理 1,发射阶段:在这一阶段烟花的形状是线性向上,通过设定一组大小不同、颜色不同的点来模拟“向上发射” 的运动运动,运动过程中 5个点被赋予不同大小的加速度,随着时间推移,后面的…

Pygame 绘制烟花的基本原理
1,发射阶段:在这一阶段烟花的形状是线性向上,通过设定一组大小不同、颜色不同的点来模拟“向上发射” 的运动运动,运动过程中 5个点被赋予不同大小的加速度,随着时间推移,后面的点会赶上前面的点,最终所有点会汇聚在一起,处于 绽放准备阶段。

2,烟花绽放:烟花绽放这个阶段,是由一个点分散多个点向不同方向发散,并且每个点的移动轨迹可需要被记录,目的是为了追踪整个绽放轨迹。

3,烟花凋零,此阶段负责描绘绽放后烟花的效果,绽放后的烟花,而在每一时刻点的下降速度和亮度(代码中也叫透明度)是不一样的,因此在代码里,将烟花绽放后将每个点赋予两个属性:分别为重力向量和生命周期,来模拟烟花在不同时期时不同的展现效果。
在这里插入图片描述

# @Author : 小红牛
# 微信公众号:WdPython
import math
from random import randint, uniform, choice
import pygamevector = pygame.math.Vector2
gravity = vector(0, 0.3)
DISPLAY_WIDTH = 1100
DISPLAY_HEIGHT = 700trail_colours = [(45, 45, 45), (60, 60, 60), (75, 75, 75),(125, 125, 125), (150, 150, 150)]
dynamic_offset = 1
static_offset = 5class Firework:def __init__(self):self.colour = (randint(0, 255), randint(0, 255), randint(0, 255))self.colours = ((randint(0, 255), randint(0, 255), randint(0, 255)), (randint(0, 255), randint(0, 255), randint(0, 255)),(randint(0, 255), randint(0, 255), randint(0, 255)))self.firework = Particle(randint(0, DISPLAY_WIDTH), DISPLAY_HEIGHT, True,self.colour)  # Creates the firework particleself.exploded = Falseself.particles = []self.min_max_particles = vector(100, 225)def update(self, win):  # called every frameif not self.exploded:self.firework.apply_force(gravity)self.firework.move()for tf in self.firework.trails:tf.show(win)self.show(win)if self.firework.vel.y >= 0:self.exploded = Trueself.explode()else:for particle in self.particles:particle.apply_force(vector(gravity.x + uniform(-1, 1) / 20, gravity.y / 2 + (randint(1, 8) / 100)))particle.move()for t in particle.trails:t.show(win)particle.show(win)def explode(self):amount = randint(self.min_max_particles.x, self.min_max_particles.y)for i in range(amount):self.particles.append(Particle(self.firework.pos.x, self.firework.pos.y, False, self.colours))def show(self, win):pygame.draw.circle(win, self.colour, (int(self.firework.pos.x), int(self.firework.pos.y)), self.firework.size)def remove(self):if self.exploded:for p in self.particles:if p.remove is True:self.particles.remove(p)if len(self.particles) == 0:return Trueelse:return Falseclass Particle:def __init__(self, x, y, firework, colour):self.firework = fireworkself.pos = vector(x, y)self.origin = vector(x, y)self.radius = 20self.remove = Falseself.explosion_radius = randint(5, 18)self.life = 0self.acc = vector(0, 0)# trail variablesself.trails = []  # stores the particles trail objectsself.prev_posx = [-10] * 10  # stores the 10 last positionsself.prev_posy = [-10] * 10  # stores the 10 last positionsif self.firework:self.vel = vector(0, -randint(17, 20))self.size = 5self.colour = colourfor i in range(5):self.trails.append(Trail(i, self.size, True))else:self.vel = vector(uniform(-1, 1), uniform(-1, 1))self.vel.x *= randint(7, self.explosion_radius + 2)self.vel.y *= randint(7, self.explosion_radius + 2)self.size = randint(2, 4)self.colour = choice(colour)for i in range(5):self.trails.append(Trail(i, self.size, False))def apply_force(self, force):self.acc += forcedef move(self):if not self.firework:self.vel.x *= 0.8self.vel.y *= 0.8self.vel += self.accself.pos += self.velself.acc *= 0if self.life == 0 and not self.firework:  # check if particle is outside explosion radiusdistance = math.sqrt((self.pos.x - self.origin.x)** 2 + (self.pos.y - self.origin.y) ** 2)if distance > self.explosion_radius:self.remove = Trueself.decay()self.trail_update()self.life += 1def show(self, win):pygame.draw.circle(win, (self.colour[0], self.colour[1], self.colour[2], 0), (int(self.pos.x), int(self.pos.y)),self.size)def decay(self):  # random decay of the particlesif 50 > self.life > 10:  # early stage their is a small chance of decayran = randint(0, 30)if ran == 0:self.remove = Trueelif self.life > 50:ran = randint(0, 5)if ran == 0:self.remove = Truedef trail_update(self):self.prev_posx.pop()self.prev_posx.insert(0, int(self.pos.x))self.prev_posy.pop()self.prev_posy.insert(0, int(self.pos.y))for n, t in enumerate(self.trails):if t.dynamic:t.get_pos(self.prev_posx[n + dynamic_offset],self.prev_posy[n + dynamic_offset])else:t.get_pos(self.prev_posx[n + static_offset],self.prev_posy[n + static_offset])class Trail:def __init__(self, n, size, dynamic):self.pos_in_line = nself.pos = vector(-10, -10)self.dynamic = dynamicif self.dynamic:self.colour = trail_colours[n]self.size = int(size - n / 2)else:self.colour = (255, 255, 200)self.size = size - 2if self.size < 0:self.size = 0def get_pos(self, x, y):self.pos = vector(x, y)def show(self, win):pygame.draw.circle(win, self.colour, (int(self.pos.x), int(self.pos.y)), self.size)def update(win, fireworks):for fw in fireworks:fw.update(win)if fw.remove():fireworks.remove(fw)pygame.display.update()# 主函数
def main():pygame.init()pygame.display.set_caption('2024新年快乐')win = pygame.display.set_mode((DISPLAY_WIDTH, DISPLAY_HEIGHT))myfont = pygame.font.Font('C:\Windows\Fonts\simkai.ttf', 80)text = myfont.render('2024新年快乐', False, (255, 0, 0))# 将文字绘制到屏幕上win.blit(text, (100, 100))pygame.display.flip()clock = pygame.time.Clock()fireworks = [Firework() for i in range(3)]  # create the first fireworksrunning = Truewhile running:clock.tick(60)for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseif event.type == pygame.KEYDOWN:# Change game speed with number keysif event.key == pygame.K_1:fireworks.append(Firework())if event.key == pygame.K_2:for i in range(10):fireworks.append(Firework())win.fill((20, 20, 30))  # draw backgroundif randint(0, 20) == 1:  # create new fireworkfireworks.append(Firework())update(win, fireworks)# stats for fun# total_particles = 0# for f in fireworks:#    total_particles += len(f.particles)# print(f"Fireworks: {len(fireworks)}\nParticles: {total_particles}\n\n")pygame.quit()quit()
main()

完毕!!感谢您的收看

----------★★历史博文集合★★----------
我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具
在这里插入图片描述

http://www.hrbkazy.com/news/37075.html

相关文章:

  • 找公司做网站多少钱成都西安今日头条最新新闻
  • 阿里云模板建站好不好免费信息发布平台网站
  • 北控水务建设发展有限公司网站宁波seo教程app推广
  • 网站制作新手教程视频国际新闻热点事件
  • 中卫网站推广公司网站网络排名优化方法
  • 哪个网站系统做的好外链群发平台
  • 网站开发的初级技术员seo推广一个月见效
  • 网站设计制作排名百度网盟推广官方网站
  • 随州学做网站seo网站推广的主要目的不包括
  • 长沙优化网站技术厂家网络推广怎么推广
  • 2021年江东seo做关键词优化
  • 重庆网站定制哪家好东莞seo外包
  • 事业单位网站登录模板seo排名助手
  • 女女做那个动漫视频网站seo快速优化软件
  • 利用菜刀软件xise做网站劫持舆情分析系统
  • 外贸网站建设如何做深圳百度seo整站
  • 找别人做网站注意问题网站策划书怎么写
  • 公司网站设计seo自动优化软件下载
  • 廊坊建站模板系统google adwords关键词工具
  • 上传引用图片 网站新闻头条今日要闻军事
  • 临汾网站建设电话长沙专业seo优化公司
  • 做地方分类信息网站需要什么资质吗无锡网络推广外包
  • windows2008 iis 网站配置常见的推广方式有哪些
  • 卫计局本年度网站建设工作总结软文
  • 湛江网站设计哪家好永久免费个人网站申请注册
  • 医院做网站备案需要哪些资料创建网站的软件
  • 天河wap网站建设公司详细描述如何进行搜索引擎的优化
  • 长沙正规竞价优化推荐杭州seo搜索引擎优化
  • 柳州最好的网站推广公司网站收录查询入口
  • 企业网站建设的策略佛山网站建设技术托管