<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          int luoxue(struct xhbiao *tou,struct xhbiao *wei)
          {
          struct xhbiao *p; //處理雪花的物理動(dòng)作
          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)下一個(gè)顯示目標(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ù)對(duì)比度判斷是否堆積雪花
          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;
          }

          上一頁(yè) 1 2 下一頁(yè)

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

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();