21xrx.com
2024-12-22 23:07:47 Sunday
登录
文章检索 我的文章 写文章
C++烟花代码简单完整分享
2023-07-04 19:52:25 深夜i     --     --
C++ 烟花代码 简单 完整 分享

C++烟花代码是一种令人着迷的编程风格,它通过简单的代码实现了惊艳的效果。今天,我们就来分享一下如何使用C++来编写烟花代码,让你也能体验一下这个神奇的世界。

首先,我们需要明确一个概念,烟花是由许多小粒子组成的,每个小粒子都有自己的位置、速度和颜色等属性。因此,编写烟花代码的关键就在于如何生成这些小粒子,并且控制它们的运动轨迹和效果。

下面是一个简单的C++烟花代码示例,供大家参考:


#include<iostream>

#include<graphics.h>

using namespace std;

const int MAXNUM = 2000;  //烟花粒子最大数

struct Particle

  float x;  //粒子x坐标

  float y;  //粒子y坐标

  float xv;  //粒子x速度

  float yv;  //粒子y速度

  float r;  //粒子半径

  float r_num;  //粒子半径系数

  int color; //粒子颜色

  int life;  //粒子存活时间

;

Particle particles[MAXNUM]; //粒子数组

int limit=0;        //限制烟花数量

void Init(Particle &p,float x,float y,float xv,float yv,float r,float r_num,int life,int color)

  p.x=x

void Generate()

{

  int i;

  for(i=0;i<20;i++)  //循环生成20颗烟花

  {

    if(limit>=MAXNUM) break;  //超过最大粒子数,退出循环

    float xv=(rand()%1000-500)/1000.0*200; // x速度在±200之间随机

    float yv=(rand()%1000)/1000.0*200;     //y速度在0~200之间随机

    float r=(rand()%40+10)/10.0;        //半径在1~5之间随机

    float r_num=(rand()%3+1);          //半径变化速率在1~4之间随机

    int life=rand()%20+50;           //生命值在50~70帧之间随机

    int x=rand()%(getmaxx()-100)+50;      //在屏幕上随机生成x坐标

    int y=rand()%(getmaxy()-100)+50;      //在屏幕上随机生成y坐标

    if(x<200&&y<200||x>getmaxx()-200&&y<200||y>getmaxy()-200) continue; //在屏幕边角不生成

    particles[limit].x=x,particles[limit].y=y;

    particles[limit].xv=xv,particles[limit].yv=yv;

    particles[limit].r=r,particles[limit].r_num=r_num;

    particles[limit].life=life;

    switch(rand()%4)  //生成不同的颜色

    {

    case 0:particles[limit].color=YELLOW;

    case 1:particles[limit].color=RED;

    case 2:particles[limit].color=GREEN;

    case 3:particles[limit].color=BLUE;

    }

    limit++;

  }

}

void Move()

{

  int i;

  for(i=0;i<limit;i++)

  {

    particles[i].x+=particles[i].xv;

    particles[i].y+=particles[i].yv;

    particles[i].yv+=1;  //y轴上的重力

    particles[i].r*=particles[i].r_num;

    particles[i].life--;

    if(particles[i].life<=0)  //烟花粒子生命结束,把它从数组中删除

    {

      particles[i]=particles[limit-1];

      limit--;

      i--;

    }

  }

}

void Draw()

{

  int i;

  for(i=0;i<limit;i++)

  {

    setcolor(particles[i].color);

    setfillcolor(particles[i].color);

    fillcircle(particles[i].x,particles[i].y,particles[i].r);

  }

}

int main()

{

  initwindow(800, 600);//初始化窗口

  setbkcolor(BLACK);//设置背景颜色为黑色

  while(true)//无限循环

  {

    Generate();//生成烟花

    Move();//移动烟花

    Draw();//绘制烟花

    Sleep(30);//延时30毫秒,以实现烟花的流畅显示

    if(limit==0) break;//如果烟花粒子都消失,退出循环

    cleardevice();//清空屏幕

  }

  closegraph();//关闭图形化窗口

  return 0;

}

这个烟花代码示例,实现了在屏幕上生成20个不同颜色、形状和变化速度的烟花,并且控制了它们的运动轨迹和寿命,让它们在空中炸裂成为无数的粒子。整个代码思路非常清晰,易于理解和修改,而且可以根据自己的喜好和需要,进行进一步的优化和扩展。

总的来说,C++烟花代码是一种非常有趣、有挑战性和富有创意的编程形式,它可以启发人们的想象力和创造力,让我们在编程的世界中拥有更加丰富和多彩的体验和感受。希望这个简单的烟花代码示例对大家有所启发和帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复