用C++写一个粒子跳动爱心代码
时间: 2023-12-27 22:23:35 浏览: 431
以下是用C++和easyx库实现的粒子跳动爱心代码:
```c++
#include <graphics.h>
#include <math.h>
#include <time.h>
#define PI 3.1415926535
int main()
{
// 初始化窗口
initgraph(800, 600);
// 设置随机数种子
srand((unsigned)time(NULL));
// 粒子数量
int n = 1000;
// 粒子数组
double x[n], y[n], vx[n], vy[n], ax[n], ay[n];
// 爱心参数
double a = 100, b = 100;
// 初始化粒子位置和速度
for (int i = 0; i < n; i++)
{
x[i] = rand() % 800;
y[i] = rand() % 600;
vx[i] = (rand() % 100 - 50) / 10.0;
vy[i] = (rand() % 100 - 50) / 10.0;
}
// 循环绘制
while (1)
{
// 清空屏幕
cleardevice();
// 计算粒子加速度
for (int i = 0; i < n; i++)
{
double dx = a - x[i];
double dy = b - y[i];
double d = sqrt(dx * dx + dy * dy);
ax[i] = dx / d;
ay[i] = dy / d;
}
// 更新粒子速度和位置
for (int i = 0; i < n; i++)
{
vx[i] += ax[i] * 0.1;
vy[i] += ay[i] * 0.1;
x[i] += vx[i] * 0.1;
y[i] += vy[i] * 0.1;
}
// 绘制粒子
for (int i = 0; i < n; i++)
{
putpixel((int)x[i], (int)y[i], WHITE);
}
// 绘制爱心
for (double t = 0; t < 2 * PI; t += 0.01)
{
double x1 = a + 16 * pow(sin(t), 3);
double y1 = b - 13 * cos(t) + 5 * cos(2 * t) + 2 * cos(3 * t) + cos(4 * t);
putpixel((int)x1, (int)y1, RED);
}
// 刷新屏幕
Sleep(10);
flushbatch();
}
// 关闭窗口
closegraph();
return 0;
}
```
阅读全文