用c++和easyX图形库写个烟花程序
时间: 2024-03-22 20:39:30 浏览: 67
好的,以下是一个简单的烟花程序的代码,使用了C++和EasyX图形库:
```c++
#include <graphics.h>
#include <math.h>
#include <time.h>
const int WIDTH = 800; // 窗口宽度
const int HEIGHT = 600; // 窗口高度
const int MAX_PARTICLES = 100; // 烟花粒子数
// 烟花粒子结构体
struct Particle {
double x, y; // 粒子位置
double vx, vy; // 速度向量
double ax, ay; // 加速度向量
double life; // 粒子生命值
double decay; // 生命值衰减速度
COLORREF color; // 粒子颜色
};
// 初始化烟花粒子
void initParticle(Particle &p, int x, int y) {
p.x = x;
p.y = y;
p.vx = (rand() % 10 - 5) * 0.1;
p.vy = (rand() % 10 - 5) * 0.1;
p.ax = 0;
p.ay = 0.1;
p.life = 1;
p.decay = 0.01;
p.color = RGB(rand() % 256, rand() % 256, rand() % 256);
}
// 更新烟花粒子
void updateParticle(Particle &p) {
p.vx += p.ax;
p.vy += p.ay;
p.x += p.vx;
p.y += p.vy;
p.life -= p.decay;
if (p.life < 0) {
p.life = 0;
}
}
int main() {
srand(time(NULL));
initgraph(WIDTH, HEIGHT); // 初始化图形界面
Particle particles[MAX_PARTICLES]; // 烟花粒子数组
int num_particles = 0; // 当前烟花粒子数
int x = WIDTH / 2, y = HEIGHT / 2; // 烟花起点
while (!kbhit()) { // 循环直到用户按下键盘
cleardevice(); // 清空画布
// 如果当前没有烟花粒子,则生成一个新的烟花
if (num_particles == 0) {
initParticle(particles[num_particles], x, y);
num_particles++;
}
// 更新和绘制烟花粒子
for (int i = 0; i < num_particles; i++) {
Particle &p = particles[i];
updateParticle(p);
setfillcolor(p.color);
setalpha(int(p.life * 255));
fillcircle(int(p.x), int(p.y), int(p.life * 10));
}
// 如果当前烟花粒子已经消失,则重新生成一个新的烟花
if (particles[num_particles - 1].life <= 0) {
num_particles = 0;
}
Sleep(10); // 暂停一段时间,减缓画面更新速度
}
closegraph(); // 关闭图形界面
return 0;
}
```
运行程序后,可以用鼠标点击窗口中的任意位置,会生成一个新的烟花。烟花会逐渐消失,直到完全消失后才会生成下一个烟花。
阅读全文