python放烟花代码,python 烟花

  python放烟花代码,python 烟花

  2022虎年即将到来,边肖为大家带来一个用Python编写的虎年特别烟火效果,全网最华丽。本文中的示例代码简单易懂,感兴趣的同学可以尝试一下。

  

导语:

  除夕是为了摆脱烦恼的大脑,迎接新的希望!在此,祝大家新年快乐,永远笑口常开,万事如意!

  

正文:

  

创建画布

  SetupDraw绘制p5.js的两个主要函数createCanvas用于创建画布的大小,background用于设置画布的背景颜色。

  功能设置(){

  创建画布(1303/2,734/2)

  }

  函数draw() {

  背景(50);

  }

  

画烟花粒子

  考虑到有很多,用一个函数粒子生成,代码如下

  var烟花;

  功能粒子(x,y) {

  this.pos=createVector(x,y)

  this.vel=createVector(0,0)

  this.acc=createVector(0,0)

  this.update=function () {

  this.vel.add(this.acc)

  this.pos.add

  this.acc.mult(0)

  }

  this.show=function () {

  点(这个位置x,这个位置y)

  }

  }

  #调用firework.update()和firework.show()来显示烟花粒子。

  功能设置(){

  创建画布(1303/2,734/2)

  冲程(255)

  中风重量(4)

  烟火=新粒子(200,150)

  }

  函数draw() {

  背景(50);

  firework.update()

  firework.show()

  }

  结果如下:

  

让烟花粒子随机出现在底部

  在设置中修改烟火,使它出现在底部的任何地方。

  烟火=新粒子(随机(宽度),高度)

  这里的宽度和高度代表画布的宽度和高度。

  结果如下

  

让烟花粒子向上运动

  您只需要在Particle中修改这个. vel。

  this.vel=createVector(0,-4)

  createVector中的第一个参数表示X轴的速度,正数表示向右的速度,负数表示向左的速度;第二个参数表示Y轴的速度,负表示向上,正表示向下。

  效果如下

  

让粒子用重力效果,可以下向运动

  首先全局声明一个变量gravity,在setup函数中设置gravity。

  gravity=createVector(0,0.2)

  firework.applyForce(重力)

  this . apply force=function(force){

  this.acc.add(强制)

  }

  效果如下

  

需要很多的烟花粒子

  你需要创建一个烟火函数

  函数Firewor

  k() {

   this.firework = new Particle(random(width), height)

   this.update = function () {

   this.firework.applyForce(gravity)

   this.firework.update()

   }

   this.show = function () {

   this.firework.show();

   }

  }

  #然后再draw中,通过for循环来显示很多的烟花粒子

  function draw() {

   background(50)

   fireworks.push(new Firework())

   for (var i = 0; i < fireworks.length; i++) {

   fireworks[i].update()

   fireworks[i].show()

   }

  }

  结果如下

  

  

让烟花粒子上到自身顶点时消失

  

  function Firework() {

   this.firework = new Particle(random(width), height)

   this.update = function () {

   if (this.firework) {

   this.firework.applyForce(gravity)

   this.firework.update()

   if (this.firework.vel.y >= 0) {

   this.firework = null

   }

   }

   }

   this.show = function () {

   if (this.firework) {

   this.firework.show();

   }

   }

  }

  效果如下

  

  

消失的那一刻,让周围爆破

  这里修改的地方会比较多,主要修改的地方是Firework

  

  function Firework() {

   this.firework = new Particle(random(width), height, true)

   this.exploded = false

   this.particles = []

   this.update = function () {

   if (!this.exploded) {

   this.firework.applyForce(gravity)

   this.firework.update()

   if (this.firework.vel.y >= 0) {

   this.exploded = true

   this.explode()

   }

   }

   for (let i = 0; i < this.particles.length; i++) {

   this.particles[i].applyForce(gravity)

   this.particles[i].update()

   }

   }

   this.explode = function () {

   for (let i = 0; i < 100; i++) {

   var p = new Particle(this.firework.pos.x, this.firework.pos.y)

   this.particles.push(p)

   }

   }

   this.show = function () {

   if (!this.exploded) {

   this.firework.show();

   }

   for (let i = 0; i < this.particles.length; i++) {

   this.particles[i].show()

   }

   }

  }

  结果如下

  

  

随机倍数爆发

  可以修改Particle来完善以下上面的效果,修改后的代码为

  

  function Particle(x, y, firework) {

   this.pos = createVector(x, y)

   this.firework = firework

   if (this.firework) {

   this.vel = createVector(0, random(-12, -8))

   } else {

   this.vel = p5.Vector.random2D()

   this.vel.mult(random(1, 6))

   }

   this.acc = createVector(0, 0)

   this.applyForce = function (force) {

   this.acc.add(force)

   }

   this.update = function () {

   this.vel.add(this.acc)

   this.pos.add(this.vel)

   this.acc.mult(0)

   }

   this.show = function () {

   point(this.pos.x, this.pos.y)

   }

  }

  效果如下:

  

  

展示烟花少一些

  通过调整几率来实现,让展示烟花少一些

  我们将draw函数中的

  

  if(random(1)<0.1){

   fireworks.push(new Firework())

  }

  修改成:

  

  if(random(1)<0.02){

   fireworks.push(new Firework())

  }

  这样就少一些了

  

然后我们又发现,烟花太散落了,修改烟花太散落的问题

  到Particle中,找到update方法,里头添加

  

  if(!this.firework){

   this.vel.mult(0.85)

  }

  可以理解为,mult的值越大作用力就越大爆炸就越散

  

淡出效果实现

  散开之后,需要慢慢淡出消失,

  其实主要引入一个变量lifespan,让它从255开始递减,通过stroke(255,this.lifespan)来实现淡出

  如下代码

  

  function Particle(x, y, firework) {

   this.pos = createVector(x, y)

   this.firework = firework

   this.lifespan = 255

   if (this.firework) {

   this.vel = createVector(0, random(-12, -8))

   } else {

   this.vel = p5.Vector.random2D()

   this.vel.mult(random(1, 6))

   }

   this.acc = createVector(0, 0)

   this.applyForce = function (force) {

   this.acc.add(force)

   }

   this.update = function () {

   if(!this.firework){

   this.vel.mult(0.85)

   this.lifespan -= 4

   }

   this.vel.add(this.acc)

   this.pos.add(this.vel)

   this.acc.mult(0)

   }

   this.show = function () {

   if (!this.firework) {

   strokeWeight(2)

   stroke(255,this.lifespan)

   } else {

   strokeWeight(4)

   stroke(255)

   }

   point(this.pos.x, this.pos.y)

   }

  }

  效果如下

  

  

修改背景颜色

  在setup中通过background函数将背景色修改成黑色

  

  background(0)

  同时在draw添加

  

  colorMode(RGB)

  background(0, 0, 0, 25)

  colorMode用于设置颜色模型,除了RGB,还有上面的HSBbackground4个参数就是对应rgba

  效果如下

  

  

添加烟花颜色

  主要给烟花添加色彩,可以随机数来添加随机颜色,主要在Firework添加一下

  

  this.hu = random(255)

  

  

结尾:

  最后祝你

  岁岁常欢愉,年年皆胜意,除夕快乐~

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: