新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用鏈表實現(xiàn)的屏幕飄雪程序

用鏈表實現(xiàn)的屏幕飄雪程序

作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏

int luoxue(struct xhbiao *tou,struct xhbiao *wei)
{
struct xhbiao *p; //處理雪花的物理動作
p=tou;
for(;p!=NULL;)
{
p->xh.nexty=p->xh.y+p->xh.shudu; //下降
p->xh.nextx=p->xh.x+FENG; //(風(fēng)向風(fēng)速)
p=p->next;
}
return 0;
}
//雪堆更新到屏幕
int xuehuagdi(struct xhbiao *tou,struct xhbiao *wei)
{
HDC hdc=GetDC(NULL);
COLORREF color,color1;
int R,G,B,RGB;
struct xhbiao *p1; //顯示雪堆鏈表的數(shù)據(jù)
p1=tou;
for(;p1!=NULL;)
{
SetPixel(hdc,p1->xh.x,p1->xh.y,p1->xh.oldcolor);
if((p1->xh.nexty<=MINY)&&(p1->xh.nextx>=0)&&(p1->xh.nextx<=MINX)) //超出屏幕邊界則刪除節(jié)點(diǎn)
{
color=GetPixel(hdc,p1->xh.nextx,p1->xh.nexty);
if(color!=snowcolor) //如果雪點(diǎn)下一個顯示目標(biāo)點(diǎn)與別的雪點(diǎn)重合則不處理等待維護(hù)函數(shù)刪除此節(jié)點(diǎn)
{
color1=GetPixel(hdc,p1->xh.nextx,(p1->xh.nexty-1));
B=abs((color>>16)&0xff-(color1>>16)&0xff);
G=abs((color>>8)&0xff-(color1>>8)&0xff);
R=abs((color)&0xff-(color1)&0xff);
RGB=(R+G+B)/3; //根據(jù)對比度判斷是否堆積雪花
if(RGB<50){
p1->xh.oldcolor=color;
SetPixel(hdc,p1->xh.nextx,p1->xh.nexty,snowcolor);
p1->xh.x=p1->xh.nextx;
p1->xh.y=p1->xh.nexty;
}else if(RGB>50){
SetPixel(hdc,p1->xh.nextx,(p1->xh.nexty-1),snowcolor1);
p1->xh.del=1;
}
}else if(color==snowcolor){
p1->xh.del=1;
}
} else if((p1->xh.nexty>MINY)||(p1->xh.nextx<0)||(p1->xh.nextx>MINX)){
p1->xh.del=1;
SetPixel(hdc,p1->xh.x,p1->xh.y,p1->xh.oldcolor);
}
p1=p1->next;
}
ReleaseDC(NULL,hdc);
return 0;
}
/////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
srand(time(NULL));
struct xhbiao *tou,*p,*wei; //tou為新建表的表頭wei為表尾p為新節(jié)點(diǎn)的指針
tou=NULL;
wei=NULL;
FENG=0;
int i,j,k;
k=0;
////////////////////////////////////////////////////////////////////////////////
MINY=1100;
MINX=1300;
link(&tou,&wei);
for(i=0;i<=8;)
{
for(j=0;j<=k;j++)
{
linkCHA(&tou,&wei);
}
luoxue(tou,wei);
xuehuagdi(tou,wei);
linkWUI(&tou,&wei);
Sleep(30);
k=rand()%22;
}
return 0;
}

上一頁 1 2 下一頁

關(guān)鍵詞: 鏈表幕飄雪程

評論


技術(shù)專區(qū)

關(guān)閉