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库并正确配置编译器。