用c写一个复杂点的烟花代码
时间: 2023-06-24 19:07:51 浏览: 79
以下是一个使用 C 语言编写的简单烟花动画代码,可以自行调整参数来制作更复杂的效果:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define WIDTH 80
#define HEIGHT 25
#define MAX_PARTICLES 100
typedef struct {
float x, y;
float vx, vy;
float ax, ay;
float ttl;
} Particle;
void clear_screen() {
COORD cursor_pos = {0, 0};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor_pos);
}
void draw_particle(int x, int y) {
COORD cursor_pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursor_pos);
printf("o");
}
void move_particle(Particle* p) {
p->vx += p->ax;
p->vy += p->ay;
p->x += p->vx;
p->y += p->vy;
p->ttl -= 0.1;
}
int main() {
srand(time(NULL));
Particle particles[MAX_PARTICLES];
int num_particles = 0;
while (1) {
clear_screen();
// Emit new particles.
if (num_particles < MAX_PARTICLES) {
particles[num_particles].x = rand() % WIDTH;
particles[num_particles].y = HEIGHT;
particles[num_particles].vx = (rand() % 21) - 10;
particles[num_particles].vy = -(rand() % 16 + 5);
particles[num_particles].ax = 0;
particles[num_particles].ay = 0.5;
particles[num_particles].ttl = (rand() % 21 + 10) / 10.0;
num_particles++;
}
// Move and draw particles.
for (int i = 0; i < num_particles; i++) {
move_particle(&particles[i]);
if (particles[i].ttl <= 0) {
particles[i] = particles[num_particles - 1];
num_particles--;
i--;
} else {
draw_particle((int)particles[i].x, (int)particles[i].y);
}
}
Sleep(50);
}
return 0;
}
```
这个代码使用了 Windows API 来实现清屏和绘制粒子的效果,因此只能在 Windows 系统上运行。你可以自行调整每个粒子的速度、加速度和寿命等参数来制作不同的烟花效果。