21xrx.com
2024-11-22 05:30:05 Friday
登录
文章检索 我的文章 写文章
C++语言编写烟花爱心代码
2023-07-08 02:31:21 深夜i     --     --
C++ 烟花 爱心 编写 代码

烟花是年节庆祝和特殊场合的常用道具之一,而烟花秀上展示的各种烟花,形态各异,颜色绚丽,其中以烟花爱心最为深受欢迎。那么,你是否也想学习如何用C++语言编写一段烟花爱心的代码呢?

首先,我们需要在代码中导入Graphics.h库,因为我们需要用到Graphics中的一些函数来绘制出烟花的效果。接下来,我们先来看代码的主体框架:

#include

#include

class Flower{

public:

  virtual void show()=0;

  virtual bool stop()=0;

    virtual void Boom()=0;

};

这段代码主要是定义了一个名为Flower的类,其中定义了三个纯虚函数:show()表示绘制烟花爆炸的效果,stop()表示判断烟花是否停止爆炸,Boom()表示烟花开始爆炸。这里使用纯虚函数的原因是因为,每个烟花的效果可能是不同的,因此可以通过继承这个父类,并实现它的三个纯虚函数,来展示任何想要的烟花效果。

接下来,我们来展示一下如何实现一个烟花爱心:

class HeartFlower:public Flower{

public:

  HeartFlower(int x=WIN_WIDTH/2,int y=WIN_HEIGHT-100,double v=10):m_x(x),m_y(y),m_v(v){}

  void show();

  bool stop();

  void Boom();

private:

  int m_x,m_y;

  double m_v;

    double m_t=0;

    double m_vx,m_vy;

};

这里我们定义了一个名为HeartFlower的子类,它从父类Flowder中继承了show()、stop()和Boom()三个函数,并且定义了自己的私有成员变量m_x、m_y、m_v、m_t、m_vx和m_vy。其中m_x和m_y表示烟花的初始位置,m_v表示烟花的速度,m_t表示时间,m_vx和m_vy表示烟花在x,y 轴上的速度。

下面我们来看看如何实现上文提到的三个函数:

void HeartFlower::show(){

  setcolor(RED);

  for(int i=m_t;i<=10+m_t;i+=2){

    double x1=m_x+m_vx*i;

    double y1=m_y+m_vy*i;

    double r=30-i/3;

    double dx=sqrt(r*r-(r-(i-m_t)*(i-m_t)/50.0)* (r-(i-m_t)*(i-m_t)/50.0))*(1-(double)(m_t+i)/20.0);

    double angle=(i-m_t)*3.14/6.0;

    double x2=x1-dx*cos(angle),y2=y1-dx*sin(angle);

    double x3=x1+dx*cos(angle),y3=y1-dx*sin(angle);

    line(x2,y2,x1,y1);

    line(x3,y3,x1,y1);

    }

}

show()函数主要是调用了Graphics.h库中的函数来绘制烟花的效果。其中,使用了红色作为画线的颜色;循环遍历的i值在变化,设置为每隔2加1,并且在一定时间范围内,绘制了烟花的外框。

bool HeartFlower::stop()

  return m_t>=15;

stop()函数主要是用来判断烟花是否在爆炸状态,可以根据时间的变化来控制烟花的消失。

void HeartFlower::Boom(){

  srand(time(0));

  double angle=60+rand()%60;

    m_t=0;

    m_vx=m_v*cos(angle*3.14/180.0);

    m_vy=-m_v*sin(angle*3.14/180.0);

    for(;!stop();m_t+=0.2){

    if(m_t<=1){

      m_x+=m_vx*0.2;

      m_y+=m_vy*0.2;

            m_vy=m_vy+9.8*0.2;

    }else

      {

      m_vx=m_vx+(-1+rand()%3)*2;

            m_vy=m_vy+9.8*0.2;

            m_x+=m_vx*0.2;

            m_y+=m_vy*0.2;

    }

        if(m_y<=0){break;}

    show();

    delay(25);

        cleardevice();

    }

}

Boom()函数则是用来执行烟花的爆炸效果,在这里设置了烟花的大小、颜色、角度、运动速度、加速度等参数,同时也更新了烟花的位置和速度,并使用了延时函数来控制绘制的速度。

最后,我们只要在主函数中实例化这个类,并且通过Boom()函数来绘制出这个烟花的效果:

int main(){

  initgraph(WIN_WIDTH,WIN_HEIGHT);

    HeartFlower flower;

    flower.Boom();

    getchar();

    closegraph();

    return 0;

}

至此,一个烟花爱心的效果就通过C++语言成功的编写出来了。在实际实现的过程中,我们可以根据需要修改颜色、大小和运动轨迹等参数,来展现出不同的烟花效果。希望大家可以学到一些有用的东西,以便实现自己的烟花效果。

  
  

评论区

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