亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? water.cpp

?? 用 vc 編 寫 的
?? CPP
字號:
// Water.cpp: implementation of the CWater class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "SearchPath.h"
#include "Water.h"



#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

extern map[Height][Width];



//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CWater::CWater()
{
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			m_map[i][j]=-1;//把m_map數組初始化成極大值
		}
	}
	for(i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			m_value[i][j]=0;
		}
	}
	head=new node;
	for(i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			if(map[i][j]==0)
			{
				m_map[i][j]=0;//把起點坐標估值初始化為0

				head->x=i;
				head->y=j;
				head->next=NULL;
				m_value[i][j]=1;
				startX=j;
				startY=i;
			}
			else if(map[i][j]==-3)
			{
				targetX=j;
				targetY=i;
			}
		}
	}

}

CWater::~CWater()
{

}


int CWater::writeNumber()
{
	//map是記錄了地圖的數組,而m_map是記錄了每個格子的價值的數組
	while(head!=NULL)
	{
		
		node *s,*p,*newHead=NULL,*newS,*newP;
		s=p=head;
		
		while(s!=NULL)
		{
			
			int i=s->x,j=s->y;
			
			if((map[i+1][j]!=-1)&&(m_value[i+1][j]==0))
			{
				if(map[i+1][j]==-3)
				{
					m_map[i+1][j] = m_map[i][j]+1;
					//找到路徑刪除所有動態申請的內存
					node *p=s;
					while(s->next!=NULL)
					{
						s = s->next;
						delete p;
						p = s;
					}
					delete s;
					
					p = newHead;
					if(newHead!=NULL)
					{
						while(newHead->next!=NULL)
						{
							newHead = newHead->next;
							delete p;
							p = newHead;
						}
						delete newHead;
					}
					return m_map[i][j]+1;
				}
				m_map[i+1][j]=m_map[i][j]+1;
				m_value[i+1][j]=1;
				
				newS=new node;
				newS->x=i+1;
				newS->y=j;
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead=newS;
					newP=newS;
				}
				else
				{
					newP->next=newS;
					newP=newS;
				}
				
			}
			
			if((map[i-1][j]!=-1)&&(m_value[i-1][j]==0))
			{
				if(map[i-1][j]==-3)
				{
					m_map[i-1][j] = m_map[i][j]+1;
					//找到路徑刪除所有動態申請的內存
					node *p=s;
					while(s->next!=NULL)
					{
						s = s->next;
						delete p;
						p = s;
					}
					delete s;
					
					p = newHead;
					if(newHead!=NULL)
					{
						while(newHead->next!=NULL)
						{
							newHead = newHead->next;
							delete p;
							p = newHead;
						}
						delete newHead;
					}
					return m_map[i][j]+1;
				};
				m_map[i-1][j]=m_map[i][j]+1;
				m_value[i-1][j]=1;
				
				
				newS=new node;
				newS->x=i-1;
				newS->y=j;
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead=newS;
					newP=newS;
				}
				else
				{
					newP->next=newS;
					newP=newS;
				}
			}
			
			if((map[i][j+1]!=-1)&&(m_value[i][j+1]==0))
			{
				if(map[i][j+1]==-3)
				{
					m_map[i][j+1] = m_map[i][j]+1;
					//找到路徑刪除所有動態申請的內存
					node *p=s;
					while(s->next!=NULL)
					{
						s = s->next;
						delete p;
						p = s;
					}
					delete s;
					
					p = newHead;
					if(newHead!=NULL)
					{
						while(newHead->next!=NULL)
						{
							newHead = newHead->next;
							delete p;
							p = newHead;
						}
						delete newHead;
					}
					return m_map[i][j]+1;
				};
				m_map[i][j+1]=m_map[i][j]+1;
				m_value[i][j+1]=1;
				
				
				newS=new node;
				newS->x=i;
				newS->y=j+1;
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead=newS;
					newP=newS;
				}
				else
				{
					newP->next=newS;
					newP=newS;
				}
			}
			
			if((map[i][j-1]!=-1)&&(m_value[i][j-1]==0))
			{
				if(map[i][j-1]==-3)
				{
					m_map[i][j-1] = m_map[i][j]+1;
					//找到路徑刪除所有動態申請的內存
					node *p=s;
					while(s->next!=NULL)
					{
						s = s->next;
						delete p;
						p = s;
					}
					delete s;
					
					p = newHead;
					if(newHead!=NULL)
					{
						while(newHead->next!=NULL)
						{
							newHead = newHead->next;
							delete p;
							p = newHead;
						}
						delete newHead;
					}
					return m_map[i][j]+1;
				};
				m_map[i][j-1]=m_map[i][j]+1;
				m_value[i][j-1]=1;
				
				
				newS=new node;
				newS->x=i;
				newS->y=j-1;
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead=newS;
					newP=newS;
				}
				else
				{
					newP->next=newS;
					newP=newS;
				}
			}
			
			
			p=s;
			s=s->next;
			delete p;
			p=s;
			
		}
		head=newHead;
	}
	return NULL;
}


int CWater::searchThePath()
{
	return writeNumber();
}

void CWater::showThePath(CDC *pDC , int showMode)
{     

	//SearchThePath();

	CBitmap bm1,bm2,bm3,bm5,bm6, *pbm;
	BITMAP bmMetric1,bmMetric2;

	bm1.LoadBitmap(IDB_BITMAP7);
	bm2.LoadBitmap(IDB_BITMAP8);
	bm3.LoadBitmap(IDB_BITMAP11);
	bm5.LoadBitmap(IDB_BITMAP12);//起點
	bm6.LoadBitmap(IDB_BITMAP13);//終點



	bm1.GetBitmap(&bmMetric1);
	bm2.GetBitmap(&bmMetric2);
	
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	pbm = memDC.SelectObject(&bm1);

	
	if(showMode == 1)
	{
		//描繪搜索過的點
		for(int i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_map[i][j]>=1)
				{
					memDC.SelectObject(&bm3);
					pDC->BitBlt(j*bmMetric1.bmHeight, i*bmMetric1.bmWidth,bmMetric1.bmWidth,bmMetric1.bmHeight,&memDC,0,0,SRCCOPY);
					//char buf[4];
					//sprintf(buf,"%d", m_map[i][j]);
					//pDC->TextOut(j*bmMetric2.bmWidth+5,i*bmMetric2.bmHeight+5,buf);
				}
			}
		}
		//結束描繪搜索過的點
	}



	//用漸變顏色顯示搜索過的點
	if(showMode == 2)
	{
		const int colorBeg = 70;
		int totalStep = (255 - colorBeg) * 5;
		double max = m_map[targetY][targetX];
		int R, G, B, temp;
		for(int i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_map[i][j] >= 1)
				{
					int curStep = (int)(m_map[i][j]/max * totalStep);
					
					if(curStep > (temp = (255 - colorBeg) * 4))
					{
						R = curStep - temp + colorBeg;
						G = colorBeg;
						B = 255;
					}
					else if(curStep > (temp = (255 - colorBeg) * 3))
					{
						R = colorBeg;
						G = 255 - (curStep - temp);
						B = 255;
					}
					else if(curStep > (temp = (255 - colorBeg) * 2))
					{
						R = colorBeg;
						G = 255;
						B = curStep - temp + colorBeg;
					}
					else if(curStep > (temp = (255 - colorBeg)))
					{
						R = 255 - (curStep - temp);
						G = 255;
						B = colorBeg;
					}
					else
					{
						R = 255;
						G = curStep + colorBeg;
						B = colorBeg;
					}
					CRect tempRect(j*bmMetric2.bmWidth,i*bmMetric2.bmHeight,(j+1)*bmMetric2.bmWidth,(i+1)*bmMetric2.bmHeight);
					CBrush brushBg;
					brushBg.CreateSolidBrush(RGB(R,G,B));
					pDC->FillRect(&tempRect,&brushBg);
				}
			}
		}
	}
//結束描繪漸變色

//描繪最短路徑
	CPen pen,*p_pen;
	pen.CreatePen(PS_SOLID,2,RGB(0,0,255));
	p_pen = pDC->SelectObject(&pen);
	
	pDC->MoveTo(targetX * bmMetric2.bmWidth+bmMetric2.bmWidth/2 , targetY * bmMetric2.bmHeight+bmMetric2.bmHeight/2);
	
	int i=targetY;
	int j=targetX;
	while(m_map[i][j]!=0)
	{
		int min=20000;
		int k=i,l=j;
		if((m_map[i+1][j]>=0)&&(m_map[i+1][j]<min))
		{
			min=m_map[i+1][j];
			k=i+1;
			l=j;
		}
		if((m_map[i-1][j]>=0)&&(m_map[i-1][j]<min))
		{
			min=m_map[i-1][j];
			k=i-1;
			l=j;
		}
		if((m_map[i][j+1]>=0)&&(m_map[i][j+1]<min))
		{
			min=m_map[i][j+1];
			k=i;
			l=j+1;
		}
		if((m_map[i][j-1]>=0)&&(m_map[i][j-1]<min))
		{
			min=m_map[i][j-1];
			k=i;
			l=j-1;
		}
		i=k;
		j=l;
		pDC->LineTo(j * bmMetric2.bmWidth+bmMetric2.bmWidth/2 , i * bmMetric2.bmHeight+bmMetric2.bmHeight/2);
	}
	
	pDC->LineTo(startX * bmMetric2.bmWidth+bmMetric2.bmWidth/2 , startY * bmMetric2.bmHeight+bmMetric2.bmHeight/2);
	pDC->SelectObject(p_pen);
	pen.DeleteObject();	
				
//結束描繪最短路徑				
			
	
/*
//顯示搜索過的點離起點的值
	CFont *poldfont,*newfont=new CFont;
	TEXTMETRIC tm;
	newfont->CreateFont(10,0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋體");
	poldfont=pDC->SelectObject(newfont);
	pDC->GetTextMetrics(&tm);
	
	for(i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			if(m_map[i][j]>=1)
			{
				char buf[4];
				sprintf(buf,"%d", m_map[i][j]);
				pDC->TextOut(j*bmMetric2.bmWidth+5,i*bmMetric2.bmHeight+5,buf);
			}
		}
	}

	pDC->SelectObject(poldfont);
	newfont->DeleteObject();
*/	



//描繪地圖
	for(i = 0; i < Height; i ++)
	{
		for(int j = 0; j < Width;  j ++)
		{
			if(map[i][j]==-1)
			{
				memDC.SelectObject(&bm1);
				pDC->BitBlt(j*bmMetric1.bmHeight, i*bmMetric1.bmWidth,bmMetric1.bmWidth,bmMetric1.bmHeight,&memDC,0,0,SRCCOPY);
			}			
			else if(map[i][j]==0)
			{
				memDC.SelectObject(&bm5);
				pDC->BitBlt(j*bmMetric2.bmHeight, i*bmMetric2.bmWidth,bmMetric2.bmWidth,bmMetric2.bmHeight,&memDC,0,0,SRCCOPY);
			}
			else if(map[i][j]==-3)
			{
				memDC.SelectObject(&bm6);
				pDC->BitBlt(j*bmMetric2.bmHeight, i*bmMetric2.bmWidth,bmMetric2.bmWidth,bmMetric2.bmHeight,&memDC,0,0,SRCCOPY);
			}			
		}
	}



	memDC.SelectObject(pbm);
	bm1.DeleteObject();
	bm2.DeleteObject();
	memDC.DeleteDC();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜夜精品看看| 成人性生交大合| 国产精品一级二级三级| 日本韩国欧美在线| 国产亚洲污的网站| 日本午夜精品视频在线观看| 菠萝蜜视频在线观看一区| 欧美一区二区视频观看视频| 中文字幕中文乱码欧美一区二区| 美女网站一区二区| 在线视频你懂得一区二区三区| 久久久久久久久久美女| 日韩影视精彩在线| 欧美亚洲图片小说| 最新中文字幕一区二区三区| 国产一区欧美日韩| 337p亚洲精品色噜噜狠狠| 一区二区在线免费观看| 国产91丝袜在线18| 久久久精品天堂| 久久99精品国产91久久来源| 欧美日韩精品一区视频| 一区二区三区四区av| 91年精品国产| 中文字幕亚洲视频| 成人aa视频在线观看| 日本一区二区三区四区在线视频 | 九九九精品视频| 欧美日韩高清一区二区不卡| 亚洲免费观看高清在线观看| 成+人+亚洲+综合天堂| 欧美国产日韩精品免费观看| 另类小说图片综合网| 日韩精品中午字幕| 国产呦萝稀缺另类资源| 精品成a人在线观看| 国产一级精品在线| 国产欧美日本一区视频| av成人免费在线观看| 亚洲欧洲99久久| 在线精品视频免费观看| 午夜精品久久久久久不卡8050| 欧美人与z0zoxxxx视频| 蜜桃精品在线观看| 久久影院电视剧免费观看| 国产高清精品久久久久| 国产精品不卡在线观看| 欧美伊人久久久久久久久影院 | 国产欧美日韩亚州综合| 成人福利视频在线看| 中文字幕亚洲精品在线观看 | 亚洲影视资源网| 欧美日韩一级二级| 精品午夜久久福利影院| 久久久久久久久久电影| 91免费版在线| 青青草国产精品亚洲专区无| 久久综合成人精品亚洲另类欧美 | 亚洲人成精品久久久久久| 欧美伊人精品成人久久综合97| 午夜精品视频一区| 久久久久久综合| 在线观看视频欧美| 狠狠久久亚洲欧美| 亚洲精品免费看| 精品福利一区二区三区| 91久久精品一区二区三| 精品一二三四区| 亚洲欧美电影一区二区| 日韩欧美成人一区二区| 99久久精品情趣| 久久激五月天综合精品| 亚洲欧美在线观看| 精品国产网站在线观看| 91丨国产丨九色丨pron| 久久国产精品免费| 亚洲一二三四久久| 国产精品污网站| 欧美va亚洲va| 欧美日韩不卡一区| av在线不卡电影| 国产精品资源站在线| 天天色图综合网| 亚洲老妇xxxxxx| 国产精品每日更新| 精品国产不卡一区二区三区| 欧美亚洲一区二区在线观看| 不卡一区中文字幕| 国产精品一区二区三区网站| 日韩精品成人一区二区三区| 亚洲日本一区二区三区| 欧美激情一区二区三区不卡| 欧美一级欧美三级在线观看| 91久久国产最好的精华液| 国产精品羞羞答答xxdd| 奇米888四色在线精品| 亚洲一二三区不卡| 亚洲精品日韩综合观看成人91| 欧美激情在线一区二区| 久久午夜色播影院免费高清| 7777精品伊人久久久大香线蕉的| 91黄色免费观看| 色综合色综合色综合| 99热在这里有精品免费| 成人av网址在线| 夫妻av一区二区| 国产成人免费在线观看| 国产 日韩 欧美大片| 韩国成人福利片在线播放| 久久精品国产久精国产爱| 蜜桃视频在线观看一区二区| 天堂精品中文字幕在线| 午夜激情综合网| 三级在线观看一区二区| 香港成人在线视频| 丝袜美腿亚洲综合| 青青草国产精品亚洲专区无| 日本在线不卡一区| 全部av―极品视觉盛宴亚洲| 日本女人一区二区三区| 青草国产精品久久久久久| 人人超碰91尤物精品国产| 另类欧美日韩国产在线| 韩国av一区二区三区在线观看| 久久爱www久久做| 国产成人免费在线观看不卡| 成人app在线观看| 色婷婷一区二区三区四区| 欧美色欧美亚洲另类二区| 91精品国产综合久久福利软件| 欧美人妇做爰xxxⅹ性高电影| 欧美日韩一区在线观看| 91精品一区二区三区久久久久久| 91精品国产黑色紧身裤美女| 精品久久国产字幕高潮| 国产蜜臀97一区二区三区| 亚洲欧美电影一区二区| 午夜国产精品影院在线观看| 激情综合网天天干| 成人激情图片网| 欧美精品精品一区| 国产亚洲成aⅴ人片在线观看| 亚洲色图欧洲色图| 日韩精品欧美成人高清一区二区| 麻豆国产欧美一区二区三区| 国产xxx精品视频大全| 一本一本久久a久久精品综合麻豆| 欧美久久久久久蜜桃| www久久精品| 亚洲自拍都市欧美小说| 狠狠色狠狠色合久久伊人| 91在线一区二区| 日韩午夜激情免费电影| 国产亚洲短视频| 午夜久久久久久久久久一区二区| 国产一区二区主播在线| 欧美最猛性xxxxx直播| 久久精品亚洲一区二区三区浴池 | 另类综合日韩欧美亚洲| av中文字幕一区| 精品国产一区二区三区久久影院 | 欧美在线视频不卡| www国产亚洲精品久久麻豆| 亚洲综合色噜噜狠狠| 国产成都精品91一区二区三| 欧美日本高清视频在线观看| 国产精品午夜在线| 久久99国内精品| 在线视频国内一区二区| 国产精品日日摸夜夜摸av| 丝袜美腿亚洲综合| 日本高清不卡视频| 国产欧美精品一区二区色综合朱莉| 亚洲成a人片在线不卡一二三区| 成人福利视频在线看| 精品少妇一区二区| 婷婷久久综合九色综合绿巨人 | 一区二区三国产精华液| 国产成人一级电影| 精品国产一二三区| 蜜臂av日日欢夜夜爽一区| 欧美日韩一区在线| 亚洲综合小说图片| 一本高清dvd不卡在线观看| 国产精品美女久久久久久2018| 国产一区二区三区四| 精品日韩一区二区| 麻豆久久久久久久| 日韩欧美电影一二三| 日本亚洲电影天堂| 在线成人免费视频| 亚洲成av人片在线观看| 欧美性一级生活| 亚洲大片免费看| 欧美精品v国产精品v日韩精品| 亚洲精品免费看| 欧美四级电影在线观看| 天天综合天天做天天综合| 欧美日韩亚洲综合| 日韩 欧美一区二区三区|