c语言烟花

时间:2025-01-26 20:17:52 手机游戏

C语言烟花程序是一种模拟烟花爆炸过程的程序,可以生成绚丽多彩的视觉效果。以下是一个简单的C语言烟花程序示例,使用了SDL库来实现烟花效果:

```c

include

include

include

define WIDTH 800

define HEIGHT 600

define PI 3.141592653589793238

typedef struct {

int x, y; // 粒子位置

int vx, vy;// 粒子速度

Uint8 r, g, b; // 粒子颜色

int life; // 粒子寿命

} Particle;

void initParticle(Particle *p, int x, int y) {

p->x = x;

p->y = y;

p->vx = rand() % 10 - 5;

p->vy = rand() % 10 - 5;

p->r = rand() % 256;

p->g = rand() % 256;

p->b = rand() % 256;

p->life = rand() % 5 + 5;

}

void updateParticle(Particle *p) {

p->x += p->vx;

p->y += p->vy;

p->life--;

}

void drawParticle(SDL_Renderer *renderer, Particle *p) {

SDL_SetRenderDrawColor(renderer, p->r, p->g, p->b, 255);

SDL_RenderDrawPoint(renderer, p->x, p->y);

}

int main(int argc, char *argv[]) {

SDL_Window *window = NULL;

SDL_Renderer *renderer = NULL;

SDL_Init(SDL_INIT_VIDEO);

SDL_CreateWindowAndRenderer(WIDTH, HEIGHT, 0, &window, &renderer);

srand(time(NULL));

Particle particles;

int particleCount = 0;

bool running = true;

while (running) {

SDL_Event event;

while (SDL_PollEvent(&event)) {

if (event.type == SDL_QUIT) {

running = false;

}

}

SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);

SDL_RenderClear(renderer);

for (int i = 0; i < particleCount; i++) {

updateParticle(&particles[i]);

drawParticle(renderer, &particles[i]);

if (particles[i].life <= 0) {

particleCount--;

}

}

SDL_RenderPresent(renderer);

SDL_Delay(16);

}

SDL_DestroyRenderer(renderer);

SDL_DestroyWindow(window);

SDL_Quit();

return 0;

}

```

这个程序首先初始化SDL库,然后创建一个窗口和渲染器。接着,它定义了一个粒子结构体,用于存储粒子的位置、速度、颜色和寿命。在主循环中,程序随机生成粒子,更新粒子的位置和寿命,并绘制粒子。当粒子的寿命耗尽时,它们将从粒子数组中移除。程序会一直运行,直到用户关闭窗口。

请注意,这个示例仅用于演示目的,实际应用中可能需要更复杂的逻辑和优化,例如添加更多的粒子效果、不同的烟花形状和颜色变化等。此外,为了在Windows平台上运行此程序,您需要安装SDL库并正确配置编译器。