#include <windows.h>
#include <time.h>
const int ScrnWidth=1366;
const int ScrnHight=768;
const long SnowCol =0xFEFFFE;
const long SnowColDown=0xFFFFFF;
const long SnowColDuck =0xFFDDDD;
const int SnowNum = 500;
const int ID_TIMER = 1;
const char g_szClassName[]="my WindowsClass";
typedef struct POINTAPI
{long x;
long y;
}a;
static HDC hDC1;
static struct POINTAPI pData[500];
static long pColor[500];
static int Vx,Vy,PVx,PVy,timecont;
long Abs(long num)
{ if(num>=0) return(num);
else return(-num);
}
int Random (int max)
{return (rand()%max);
}
int InitP(int i)
{pData[i].x=Random(ScrnWidth);
pData[i].y=Random(5);
pColor[i]=GetPixel(hDC1,pData[i].x,pData[i].y);
return 0;
}
long GetContrast(int i)
{long ColorCmp;
long tempR;
long tempG;
long tempB;
int Slope;
if(PVy!=0) Slope = PVx / PVy;
else Slope=2;
if(Slope==0)ColorCmp = GetPixel(hDC1,pData[i].x,pData[i].y+1);
else if(Slope>1) ColorCmp =GetPixel(hDC1,pData[i].x+1,pData[i].y+1);
if(ColorCmp==SnowCol) return 0;
tempB =Abs((ColorCmp>>16)&0xff-(pColor[i]>>16)&0xff);
tempG=Abs((ColorCmp>>8)&0xff-(pColor[i]>>8)&0xff);
tempR=Abs((ColorCmp)&0xff-(pColor[i])&0xff);
(tempR*0.114+tempG*0.587+tempB*0.299);
return ((tempR+tempG+tempB)/3);
}
void DrawP(void)
{ int i;
for(i=0;i<SnowNum;i++)
{if(pColor[i]!=SnowCol&&pColor[i]!=-1)SetPixel(hDC1,pData[i].x,pData[i].y,pColor[i]);
PVx = Random(2)-1+Vx*(i%3);
PVy = Vy*(i%3+1);