21xrx.com
2024-11-25 03:13:47 Monday
登录
文章检索 我的文章 写文章
使用 Dev-C++ 制作烟花代码的教程
2023-07-09 11:09:30 深夜i     --     --
Dev-C++ 烟花代码 制作教程 编程 美术设计

为了庆祝节日或者举办活动,烟花是必不可少的元素。那么如何用Dev-C++制作烟花代码呢?下面是具体的教程。

一、环境准备

首先,需要准备好Dev-C++开发环境。安装好程序后,打开Dev-C++,点击“文件”->“新建文件”,在新建文件窗口中选择“控制台应用程序”,并填写相关信息,比如文件名、项目名、文件夹地址等。

二、代码编写

在窗口中,输入以下代码:


#include <graphics.h>

#include <math.h>

#include <stdlib.h>

#include <time.h>

#include <conio.h>

#define MAXNUM 1000

struct dian

  double x;

void init(dian s[], int n) {

  int i;

  for (i = 0; i < n; i++) {

    s[i].x = 276;

    s[i].y = 400;

    s[i].r = 1.0 + 1.0 * rand() / RAND_MAX;//偏移量

    s[i].dr = 0.2 + 0.6 * rand() / RAND_MAX;

    s[i].maxvx = 6.0;

    s[i].vx = s[i].maxvx * cos(2 * 3.14 * rand() / RAND_MAX);//初速度

    s[i].vy = s[i].maxvx * sin(2 * 3.14 * rand() / RAND_MAX);

    s[i].ax = 0.0;//后期设置的加速度

    s[i].ay = -0.0;//后期设置的加速度

    s[i].act = 1;//粒子活动性

  }

}

void draw(dian s[], int n) {

  int i;

  setlinecolor(WHITE);

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

    circle((int)s[i].x, (int)s[i].y, (int)s[i].r);

}

void cleardevice() {

  setfillcolor(BLACK);

  solidrectangle(0, 0, 1024, 768);

}

void getdxdy(dian &a, dian &b) {

  double dx, dy, len, difx, dify;//修正质量,让重量不产生影响

  difx = a.x - b.x;

  dify = a.y - b.y;

  len = sqrt(difx * difx + dify * dify);

  dx = a.dr * difx / len;//要清空才能进行下一次操作

  dy = a.dr * dify / len;

  a.vx = a.vx + dx;

  a.vy = a.vy + dy;

  b.vx = b.vx - dx;//在两个粒子之间交换加速度和减速

  b.vy = b.vy - dy;

}

void move(dian s[], int n) {

  int i, j;

  dian *a, *b;

  for (i = 0; i < n; i++) {

    a = s + i;//s是数组首地址,对于i取地址,可以设置为s+i

    if (a->act) {//当活性粒子在场景中时

      a->vy += a->ay;

      a->vx += a->ax;

      if (a->vx * a->vx + a->vy * a->vy > a->maxvx * a->maxvx) {

        a->vx *= 0.9;

        a->vy *= 0.9;

      }

      a->x += a->vx;

      a->y += a->vy;

      if (a->y < -10 || a->y > 768 + 10 || a->x < -10 || a->x > 1024 + 10)

        a->act = 0;

    }

  }

  for (i = 0; i < n; i++) {

    a = s + i;

    if (a->act) {

      for (j = i + 1; j < n; j++) {

        b = s + j;

        if (b->act)

          if (fabs(a->x - b->x) < 100 && fabs(a->y - b->y) < 100)

            getdxdy(*a, *b);//重力与反作用力之间的交换减速

      }

    }

  }

}

void setact(dian s[], int n, int k) {

  int i;

  for (i = 0; i < k; i++) {

    s[rand() % n].act = false;

  }

}

int main() {

  initgraph(1024, 768);

  setbkcolor(BLACK);

  cleardevice();

  dian a[MAXNUM];

  int i, j;

  int firenum = 1000;

  while (1) {

    cleardevice();

    setact(a, firenum, 50);

    draw(a, firenum);

    move(a, firenum);

    Sleep(30);//更新粒子的时间为30毫秒

    FlushBatchDraw();//批处理绘画

  }

  return 0;

}

三、运行程序

点击“运行”->“编译并运行F9”,即可运行程序,制作出烟花效果。

以上就是使用Dev-C++制作烟花代码的教程,掌握了这个技能,可以为你的活动增添更多的乐趣,感兴趣的小伙伴不妨试试。

  
  

评论区

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