帮我用c++在easyx下写一段樱花树落叶的代码
时间: 2023-12-14 11:03:18 浏览: 205
好的,以下是一个使用EasyX图形库的C++代码,可以绘制一个樱花树落叶的动画:
```c++
#include <graphics.h>
#include <time.h>
const int WIDTH = 800; // 窗口宽度
const int HEIGHT = 600; // 窗口高度
const int TREE_X = 100; // 树的位置X坐标
const int TREE_Y = 500; // 树的位置Y坐标
const int TREE_WIDTH = 50; // 树的宽度
const int TREE_HEIGHT = 100; // 树的高度
const int LEAF_NUM = 50; // 叶子数量
// 叶子的结构体
struct Leaf
{
int x; // 叶子的位置X坐标
int y; // 叶子的位置Y坐标
int speed; // 叶子的下落速度
int angle; // 叶子的飘落角度
COLORREF color; // 叶子的颜色
};
// 初始化叶子
void initLeaves(Leaf leaves[])
{
srand((unsigned int)time(NULL));
for (int i = 0; i < LEAF_NUM; i++)
{
leaves[i].x = rand() % (TREE_WIDTH - 20) + TREE_X + 10;
leaves[i].y = rand() % (TREE_HEIGHT - 20) + TREE_Y - 70;
leaves[i].speed = rand() % 3 + 1;
leaves[i].angle = rand() % 60 + 240;
leaves[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
}
}
// 绘制樱花树
void drawTree()
{
setfillcolor(BROWN); // 设置树干颜色
solidrectangle(TREE_X, TREE_Y, TREE_X + TREE_WIDTH, TREE_Y + TREE_HEIGHT);
setfillcolor(PINK); // 设置花瓣颜色
fillcircle(TREE_X + TREE_WIDTH / 2, TREE_Y - 20, 30);
fillcircle(TREE_X + TREE_WIDTH / 2 - 20, TREE_Y - 50, 30);
fillcircle(TREE_X + TREE_WIDTH / 2 + 20, TREE_Y - 50, 30);
}
// 绘制叶子
void drawLeaf(Leaf leaf)
{
setfillcolor(leaf.color);
fillcircle(leaf.x, leaf.y, 5);
}
// 更新叶子的位置
void updateLeaf(Leaf& leaf)
{
leaf.x += leaf.speed * cos(leaf.angle * 3.14 / 180);
leaf.y += leaf.speed * sin(leaf.angle * 3.14 / 180);
// 叶子飘出窗口则重新生成
if (leaf.x < 0 || leaf.x > WIDTH || leaf.y > HEIGHT)
{
leaf.x = rand() % (TREE_WIDTH - 20) + TREE_X + 10;
leaf.y = rand() % (TREE_HEIGHT - 20) + TREE_Y - 70;
leaf.speed = rand() % 3 + 1;
leaf.angle = rand() % 60 + 240;
leaf.color = RGB(rand() % 256, rand() % 256, rand() % 256);
}
}
int main()
{
initgraph(WIDTH, HEIGHT); // 初始化窗口
Leaf leaves[LEAF_NUM];
initLeaves(leaves); // 初始化叶子
while (true)
{
drawTree(); // 绘制樱花树
for (int i = 0; i < LEAF_NUM; i++)
{
drawLeaf(leaves[i]); // 绘制叶子
updateLeaf(leaves[i]); // 更新叶子位置
}
Sleep(20); // 等待一段时间
cleardevice(); // 清空屏幕
}
closegraph(); // 关闭图形窗口
return 0;
}
```
运行代码将会显示一个樱花树落叶的动画效果。可以根据需要调整窗口大小、树的位置和大小、叶子数量和飘落速度等参数,以获得不同的效果。
阅读全文