首先,需要设定雪花在一个窗口中的总数目,这个关系到雪花的空间密度。
假定有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;}}
如果觉得《c语言——easyx实现飘雪花效果》对你有帮助,请点赞、收藏,并留下你的观点哦!