我学习的这种流星雨是通过VS2013和easyx图形库相结合而产生的exe文件
我先讲一下实现效果:
我这个流星雨的实现效果为,背景为星星,从左上角向右下角飘流星,很适合程序员的浪漫的!!
如图:为程序实现后的效果!
应该是流动性的,这里贴的是静图
思路是:
分模块编写,并实现的叭
星星:建立星星属性类(之后方便调用)------>星星初始化属性------>画星星在控制台上
流星:建立流星属性类(之后方便调用)------>流星初始化属性------>贴流星图在控制台上
主函数:在主函数中初始化并调用这些函数,这样的话,可以让美丽漂亮的星星以及流星在屏幕上
接下来是程序编写环节:
#include<stdio.h>
#include<graphics.h>
#include<time.h>
#include<conio.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
IMAGE img1,img2;
//星星属性
struct Star
{
int x,y;//坐标
int step;//速度
int color;//颜色
}star[1000];
//流星属性
struct Metor
{
int x,y;//坐标
int step;//速度
int style;//风格,即是哪一种图片
}meteor[520];
//初始化星星
void initStar(int i)
{
star[i].x=rand()%1000;
star[i].y=rand()%600;
star[i].color=RGB(rand()%256,rand()%256,rand()%256);//星星的颜色采用五颜六色
star[i].step=rand()%5+2;
}
//初始化流星
void initMeteor(int i)
{
meteor[i].x=rand()%2000-1000;//这样的话,取的值就是在[0,1999]之间
meteor[i].y=rand()%200;//[0,199]-400;
meteor[i].step=rand()%20+5;//[0,40]+5
meteor[i].style=rand()%2;//流星有两种风格随便取
}
//画流星
void drawMeteor(int i)
{
for(i=0;i<520;i++)
{
if(meteor[i].style==0)
{
putimage(meteor[i].x,meteor[i].y,&img1,SRCPAINT);//为了防止这流星图片重叠,而加的SRCPAINT
}
if(meteor[i].style==1)
{
putimage(meteor[i].x,meteor[i].y,&img2,SRCPAINT);//贴图函数
}
}
}
//画星星
void drawStar(int i)
{
putpixel(star[i].x,star[i].y,star[i].color);
star[i].x+=star[i].step;
if(star[i].x>1000)
{
putpixel(star[i].x,star[i].y,star[i].color);
initStar(i);
}
}
//移动流星
void moveMeteor(int i)
{
for(i=0;i<520;i++)
{
meteor[i].x+=meteor[i].step;
meteor[i].y+=meteor[i].step;
if(meteor[i].x>1000||meteor[i].y>600)
{
initMeteor(i);
}
}
}
int main()
{
srand((unsigned int)time(NULL));//随机种子
initgraph(1000,600);//创建图形窗口
loadimage(&img1,"1.jpg",50,50);//加载图片
loadimage(&img2,"2.jpg",30,30);//加载图片
int i=0;
for(i=0;i<1000;i++)
{
initStar(i);//画1000个星星
}
for(i=0;i<520;i++)
{
initMeteor(i);//初始化所有星星
}
while(1)
{
BeginBatchDraw();//防止闪屏,和EndBatchDraw()搭配使用
cleardevice();//刷新
for(i=0;i<1000;i++)//画1000个星星
{
drawStar(i);
}
drawMeteor(i);//调用函数
moveMeteor(i);
Sleep(50);//加延时
EndBatchDraw();
}
system("pause");
return 0;
}
流星素材
欢迎交流指正~~~