首先,需要设定雪花在一个窗口中的总数目,这个关系到雪花的空间密度。
假定有20个雪花。就需要两个数组,分别为x[20] y[20]来分别记录x坐标和y坐标。通过自定义一个函数来初始化雪花的位置。这里需要用到随机数的相关知识。
其次,如果当雪花落下时,在雪花落的位置画一个雪花,模拟雪花残留在地面上。当雪花的y坐标达到画布上限时,令其为0,再重新初始化x坐标,即可实现雪花的连续随机飘落。下面是代码:
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
// 定义点的坐标数组
int x[100]; // 点的 x 坐标
int y[100]; // 点的 y 坐标
int i;
void update_fall();
int main()
{
srand( (unsigned)time(NULL) );
initgraph(640, 480);
update_fall();
while(!_kbhit())
{
for(i = 0; i < 20; i++)
{
// 擦掉前一个点
setcolor(BLACK);
setfillcolor(BLACK);
fillcircle(x[i],y[i],5);
// 计算新坐标
y[i] += 3;
if (y[i]>= 480)
{
setcolor(WHITE); //在落地位置画雪花
setfillcolor(WHITE);
fillcircle(x[i],y[i],5);
y[i]=0; //重新初始化雪花的位置
x[i]=rand() % 640;
}
setcolor(WHITE); //在新位置画雪花
setfillcolor(WHITE);
fillcircle(x[i],y[i],5);
}
Sleep(10);
}
closegraph();
return 0;
}
void update_fall()
{
for (i = 0; i < 20; i++)
{
x[i] = rand() % 640;
y[i] = rand() % 480;
}
}