利用Python绘制虎年烟花秀
更新时间:2022年1月26日 18:03 点击:238 作者:川川菜鸟
一、演示效果
b站:虎年烟花演示
二、python代码
import pygame from math import * from pygame.locals import * import random class firew: def __init__(self, pos, color, light, size, move): self.pos = list(pos) self.color = list(color) self.light = light self.size = size self.move = list(move) def force(self, force): self.move[0] += force[0] self.move[1] += force[1] self.move[0] *= force[2] self.move[1] *= force[2] def update(self): self.pos[0] += self.move[0] self.pos[1] += self.move[1] def render(self, fenster, glitter): glitter = (glitter and random.randint(40, 100)/100) or 1 c = rund( mult(self.color, self.light*glitter) ) rad = int(round(self.light* self.size)) rad += rad < 1 #print(c) pygame.draw.circle(fenster, c, rund(self.pos), rad) def summon(fws, pos, pre_move = [0,0]): mix.stop() #anz = random.randint(30, 250) anz = random.randint(200, 350) r = random.randint(0, 255) g = random.randint(0, 255) b = random.randint(0, 255) for i in range(anz): ang = random.randint(0, 360) speed = random.randint(100, 1000) / 250 move = (cos(radians(ang))*speed + pre_move[0], sin(radians(ang))*speed + pre_move[1]) light = random.randint(60, 100)/100 size = random.randint(100, 300)/100 fws.append( firew(pos, (r,g,b), light, size, move) ) # Sound abspielen l, r = ( 0.2 + 0.8*(ww-pos[0])/ww, 0.2 + 0.8*pos[0]/ww ) mix.set_volume(l, r) mix.play(sound) return fws def rund(liste): new = [] for i in liste: new.append(int(round(i))) return new def mult(color, multi): new = list(color) new[0] *= multi new[1] *= multi new[2] *= multi return new pygame.init() sound = pygame.mixer.Sound("firew.wav") mix = pygame.mixer.Channel(0) mix.set_volume(1, 1) bg = (0, 0, 0) ww, wh = (1200, 800) fenster = pygame.display.set_mode((ww, wh)) #pygame.display.set_caption("[Leertaste] für Pause; [c] für automatisches Feuerwerk") fws = [] # firework particles rockets = [] force = [0, 0.02, 0.985] max_counter = random.randint(0, 200) counter = max_counter auto = True pause = False run = 1 clock = pygame.time.Clock() while run: pygame.display.set_caption("[Spacebar] to pause; [c] disable automatic fireworks") counter -= (auto and not pause) if counter <= 0: # neues erstellen #pos = [random.randint(ww*1/4, ww*3/4), random.randint(wh*1/4, wh*3/5)] pos = [random.randint(ww*2/5, ww*3/5), wh] move = [random.randint(-100, 100)/100, -random.randint(800, 1500)/110] rockets.append( firew(pos, (255, 255, 255), 1, 2, move) ) #fuse = random.randint(50, 150) # Zuendschnur fuse = random.randint(50, 80) rockets[-1].fuse = fuse #fws = summon(fws, pos) max_counter = random.randint(10, 100) counter = max_counter for e in pygame.event.get(): if e.type == QUIT: run = 0 if e.type == KEYDOWN: if e.key == K_c: auto = not auto if e.key == K_SPACE: pause = not pause if e.key == K_v: fws = []; rockets = [] if e.type == MOUSEBUTTONDOWN: fws = summon(fws, e.pos) fenster.fill(bg) dellist1 = [] dellist2 = [] for i, rocket in enumerate(rockets): if not pause: rocket.force(force) rocket.update() rocket.render(fenster, False) rocket.fuse -= not pause if rocket.fuse < 0: dellist1.append(i) # explosion erschaffen fws = summon(fws, rocket.pos, rocket.move) for i, f in enumerate(fws): if not pause: f.force(force) f.update() f.render(fenster, True and not pause) f.light -= (not pause) * random.randint(0, 150) / 7500 if f.light < 0: dellist2.append(i) dellist1.reverse() dellist2.reverse() for d in dellist1: del rockets[d] for d in dellist2: del fws[d] pygame.display.update() clock.tick(80) pygame.quit()
演示:
三、前端代码
效果:
到此这篇关于利用Python绘制虎年烟花秀的文章就介绍到这了,更多相关Python虎年烟花秀内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://blog.csdn.net/weixin_46211269/article/details/122686
相关文章
- 这篇文章主要为大家详细介绍了C语言实现放烟花的程序,有音乐播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-23
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
- 在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
python-for x in range的用法(注意要点、细节)
这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
python Matplotlib基础--如何添加文本和标注
这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
- 在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
- 这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
- 这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
Python getsizeof()和getsize()区分详解
这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20- 这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
- 这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08
- 这篇文章主要介绍了解决python 两个时间戳相减出现结果错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-12