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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wave.cpp

?? 用 vc 編 寫 的
?? CPP
字號(hào):
// Wave.cpp: implementation of the CWave class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SearchPath.h"
#include "Wave.h"

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

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

extern map[Height][Width];

CWave::CWave()
{
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			m_pNode[i][j] = &m_node[i][j];
			m_node[i][j].close = 0;
			m_node[i][j].next = NULL;
			m_node[i][j].value = -1;//一開始節(jié)點(diǎn)初始值為-1
			m_node[i][j].x = j;
			m_node[i][j].y = i;
			if(map[i][j]==0)
			{
				startX=j;
				startY=i;
			}
			else if(map[i][j]==-3)
			{
				targetX=j;
				targetY=i;
			}
		}
	}
}

CWave::~CWave()
{

}



int CWave::searchThePath()
{
	wa_node *head = m_pNode[startY][startX];
	head->value = 0;
	head->close = 1;
	while(head!=NULL)
	{
		
		wa_node *s,*newHead = NULL,*newS,*newP;
		s = head;
		
		while(s!=NULL)
		{
			
			int i=s->y,j=s->x;
			
			if((map[i+1][j]!=-1)&&(m_node[i+1][j].close==0))//如果不在close列表中
			{
				int ii = i+1;
				if(map[ii][j]==-3)
				{
					m_node[ii][j].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[ii][j].value = m_node[i][j].value + 1;
				m_node[ii][j].close = 1;
				

				newS = m_pNode[ii][j];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}

			if((map[i-1][j]!=-1)&&(m_node[i-1][j].close==0))//如果不在close列表中
			{
				int ii = i-1;
				if(map[ii][j]==-3)
				{
					m_node[ii][j].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[ii][j].value = m_node[i][j].value + 1;
				m_node[ii][j].close = 1;
				

				newS = m_pNode[ii][j];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}

			if((map[i][j+1]!=-1)&&(m_node[i][j+1].close==0))//如果不在close列表中
			{
				int jj = j+1;
				if(map[i][jj]==-3)
				{
					m_node[i][jj].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[i][jj].value = m_node[i][j].value + 1;
				m_node[i][jj].close = 1;
				

				newS = m_pNode[i][jj];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}

			if((map[i][j-1]!=-1)&&(m_node[i][j-1].close==0))//如果不在close列表中
			{
				int jj = j-1;
				if(map[i][jj]==-3)
				{
					m_node[i][jj].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[i][jj].value = m_node[i][j].value + 1;
				m_node[i][jj].close = 1;
				

				newS = m_pNode[i][jj];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}
			
			
			s = s->next;
		}
		head = newHead;
	}
	return 0;


}


void CWave::prepareForStepByStep()
{
	m_head = m_pNode[startY][startX];
	m_head->value = 0;
	m_head->close = 1;
}


int CWave::searchThePathStepByStep()
{	
	if(m_head!=NULL)
	{
		wa_node *s,*newHead = NULL,*newS,*newP;
		s = m_head;
		
		while(s!=NULL)
		{
			
			int i=s->y,j=s->x;
			
			if((map[i+1][j]!=-1)&&(m_node[i+1][j].close==0))//如果不在close列表中
			{
				int ii = i+1;
				if(map[ii][j]==-3)
				{
					m_node[ii][j].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[ii][j].value = m_node[i][j].value + 1;
				m_node[ii][j].close = 1;
				

				newS = m_pNode[ii][j];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}

			if((map[i-1][j]!=-1)&&(m_node[i-1][j].close==0))//如果不在close列表中
			{
				int ii = i-1;
				if(map[ii][j]==-3)
				{
					m_node[ii][j].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[ii][j].value = m_node[i][j].value + 1;
				m_node[ii][j].close = 1;
				

				newS = m_pNode[ii][j];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}

			if((map[i][j+1]!=-1)&&(m_node[i][j+1].close==0))//如果不在close列表中
			{
				int jj = j+1;
				if(map[i][jj]==-3)
				{
					m_node[i][jj].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[i][jj].value = m_node[i][j].value + 1;
				m_node[i][jj].close = 1;
				

				newS = m_pNode[i][jj];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}

			if((map[i][j-1]!=-1)&&(m_node[i][j-1].close==0))//如果不在close列表中
			{
				int jj = j-1;
				if(map[i][jj]==-3)
				{
					m_node[i][jj].value = m_node[i][j].value + 1;
					return 1;
				}
				m_node[i][jj].value = m_node[i][j].value + 1;
				m_node[i][jj].close = 1;
				

				newS = m_pNode[i][jj];
				newS->next=NULL;
				if(newHead==NULL)
				{
					newHead = newS;
					newP = newS;
				}
				else
				{
					newP->next = newS;
					newP = newS;
				}		
			}
			s = s->next;
		}
		m_head = newHead;
		return 2;//表示尋徑過程沒有結(jié)束!
	}
	return 0;
}





void CWave::showThePath(CDC *pDC , int showMode)
{
	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);//起點(diǎn)
	bm6.LoadBitmap(IDB_BITMAP13);//終點(diǎn)



	bm1.GetBitmap(&bmMetric1);
	bm2.GetBitmap(&bmMetric2);
	
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	pbm = memDC.SelectObject(&bm1);
	
	
	if(showMode == 1)
	{
		//描繪搜索過的點(diǎn)
		for(int i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_node[i][j].value>=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);
				}
			}
		}
		//結(jié)束描繪搜索過的點(diǎn)
	}

//用漸變顏色顯示搜索過的點(diǎn)
	if(showMode == 2)
	{
		const int colorBeg = 70;
		int totalStep = (255 - colorBeg) * 5;
		double max = m_node[targetY][targetX].value;
		int R, G, B, temp;
		for(int i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_node[i][j].value != -1)
				{
					int curStep = (int)(m_node[i][j].value/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);
				}
			}
		}
	}
	//結(jié)束描繪漸變色
	
	//用漸變顏色一步一步顯示搜索過的點(diǎn)
	if(showMode == 3)
	{
		double max = 0;
		for(int i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_node[i][j].value > max)
				{
					max = m_node[i][j].value;
				}
			}
		}
		//已經(jīng)找到當(dāng)前的最大步數(shù)
		const int colorBeg = 70;
		int totalStep = (255 - colorBeg) * 5;
		//double max = m_node[targetY][targetX].value;
		int R, G, B, temp;
		for(i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_node[i][j].value != -1)
				{
					int curStep = (int)(m_node[i][j].value/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);
				}
			}
		}
	}

	
	//如果是演示程序就不用顯示路徑
	if(showMode != 3)
	{
		//描繪最短路徑
		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;
		
		int min=20000;
		int k=i,l=j;
		if((m_node[i+1][j].value>=0)&&(m_node[i+1][j].value<min))
		{
			min=m_node[i+1][j].value;
			k=i+1;
			l=j;
		}
		if((m_node[i-1][j].value>=0)&&(m_node[i-1][j].value<min))
		{
			min=m_node[i-1][j].value;
			k=i-1;
			l=j;
		}
		if((m_node[i][j+1].value>=0)&&(m_node[i][j+1].value<min))
		{
			min=m_node[i][j+1].value;
			k=i;
			l=j+1;
		}
		if((m_node[i][j-1].value>=0)&&(m_node[i][j-1].value<min))
		{
			min=m_node[i][j-1].value;
			k=i;
			l=j-1;
		}
		i=k;
		j=l;
		
		while(m_node[i][j].value!=0)
		{
			if(m_node[i+1][j].value == min-1)
			{
				i = i+1;
			}
			else if(m_node[i-1][j].value == min-1)
			{
				i = i-1;
			}
			else if(m_node[i][j+1].value == min-1)
			{
				j = j+1;
			}
			else if(m_node[i][j-1].value == min-1)
			{
				j = j-1;
			}
			min--;
			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();	
		
		//結(jié)束描繪最短路徑	
	}	
	/*
	//顯示搜索過的點(diǎn)離起點(diǎn)的值
	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(int 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();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区视频免费| 成人黄色免费短视频| 亚洲免费观看视频| 中文字幕一区二区三区蜜月| 中文乱码免费一区二区| 久久久不卡影院| 久久久久久久久久久久久女国产乱| 欧美成人一区二区三区片免费| 正在播放亚洲一区| 欧美一区二区三区四区在线观看 | 宅男噜噜噜66一区二区66| 欧美性色aⅴ视频一区日韩精品| 91麻豆福利精品推荐| 色综合久久99| 欧美在线观看视频在线| 在线亚洲一区二区| 91精品国产综合久久精品麻豆| 欧美老肥妇做.爰bbww| 欧美大片在线观看| 久久久久国产一区二区三区四区 | 国产精品视频一区二区三区不卡| 国产欧美一区二区精品仙草咪| 久久九九久精品国产免费直播| 国产日韩欧美精品在线| 久久免费电影网| 国产网红主播福利一区二区| 国产欧美精品日韩区二区麻豆天美| 中文字幕一区二区三区在线播放 | 亚洲va欧美va天堂v国产综合| 五月开心婷婷久久| 国产乱人伦偷精品视频不卡| 本田岬高潮一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 欧美午夜在线一二页| 精品久久人人做人人爱| 专区另类欧美日韩| 久久精品久久精品| 色综合久久天天| 一区二区三区四区在线免费观看| 日日摸夜夜添夜夜添精品视频| 极品少妇一区二区| 欧美综合亚洲图片综合区| 日韩色视频在线观看| 国产精品久久久久一区二区三区| 亚洲一区二区欧美激情| 国产一区二区中文字幕| 欧美色偷偷大香| 中文成人综合网| 美女网站色91| 欧美日韩卡一卡二| 国产精品乱码人人做人人爱 | 欧美久久久久久蜜桃| 国产精品久久久久久亚洲毛片| 亚洲成人av资源| 99视频精品在线| 26uuu亚洲| 男女性色大片免费观看一区二区 | 国产精品一品二品| 欧美亚洲一区二区三区四区| 国产欧美一区二区精品性色超碰| 奇米影视7777精品一区二区| 欧美在线免费视屏| 亚洲精品乱码久久久久久黑人| 国产大片一区二区| 国产亚洲欧美激情| 国产一区二区三区蝌蚪| www激情久久| 精品一区二区三区日韩| 欧美一区二区在线免费播放 | 久久99精品久久久久久国产越南 | 亚洲手机成人高清视频| 国产精品91一区二区| 欧美日韩国产一级二级| 亚洲成人1区2区| 欧美视频一区二区三区在线观看 | 久久综合九色综合欧美就去吻| 亚洲午夜电影在线观看| 91网站最新网址| 1024成人网色www| 99久久久精品| 亚洲欧美电影一区二区| 99综合影院在线| 亚洲欧洲精品一区二区三区 | 亚洲aⅴ怡春院| 欧美日韩精品一区二区在线播放| 亚洲福利视频一区二区| 8v天堂国产在线一区二区| 亚洲午夜激情网页| 欧美电影免费观看完整版| 激情六月婷婷久久| 国产三级一区二区三区| gogogo免费视频观看亚洲一| 一区二区三区欧美日| 7777精品伊人久久久大香线蕉的| 奇米精品一区二区三区在线观看| 欧美一区二区三区四区五区| 国产黑丝在线一区二区三区| 中文无字幕一区二区三区| 一本久久综合亚洲鲁鲁五月天| 天堂蜜桃91精品| 久久久另类综合| 91女人视频在线观看| 视频一区二区欧美| 国产欧美日韩视频一区二区| 91蝌蚪porny| 日本v片在线高清不卡在线观看| 久久人人97超碰com| 91麻豆视频网站| 久久精品国产一区二区三| 国产精品久久久久久久蜜臀| 欧美日韩激情在线| 丁香桃色午夜亚洲一区二区三区| 亚洲精品成人少妇| 久久天天做天天爱综合色| 色欧美日韩亚洲| 黄一区二区三区| 亚洲香蕉伊在人在线观| 国产日本欧美一区二区| 欧美日韩亚洲综合一区| 国产老肥熟一区二区三区| 亚洲午夜免费福利视频| 国产精品每日更新| 欧美岛国在线观看| 欧美日本在线播放| 成人av高清在线| 激情五月婷婷综合| 亚洲国产日韩一区二区| 国产精品美女www爽爽爽| 精品理论电影在线观看| 欧美视频在线一区| 91蜜桃在线观看| 国产麻豆精品在线| 欧美aaa在线| 亚洲人成在线播放网站岛国| 精品粉嫩aⅴ一区二区三区四区 | 欧美一区二区视频观看视频| 色琪琪一区二区三区亚洲区| 精品亚洲国内自在自线福利| 亚洲丝袜制服诱惑| 欧美激情一区二区在线| 精品国产在天天线2019| 在线播放国产精品二区一二区四区| 成人开心网精品视频| 久久www免费人成看片高清| 亚洲三级电影网站| 国产午夜一区二区三区| 久久精品夜色噜噜亚洲a∨| 欧美一级理论性理论a| 欧美精品 日韩| 精品视频免费在线| 欧美视频中文字幕| 色婷婷久久久久swag精品 | 国产日韩欧美高清在线| 久久久综合九色合综国产精品| 制服丝袜亚洲精品中文字幕| 欧美日韩激情在线| 欧美日韩免费在线视频| 色先锋aa成人| 色菇凉天天综合网| 色综合久久久久| 欧美性受极品xxxx喷水| 欧美视频一区二| 91精品国产综合久久精品图片| 91丨porny丨首页| 色婷婷综合久久久中文字幕| 在线精品国精品国产尤物884a| 91福利精品第一导航| 欧美性xxxxxx少妇| 欧美一区二区三区喷汁尤物| 日韩欧美123| 国产色一区二区| 亚洲欧洲日本在线| 亚洲一区二区三区四区不卡| 日产欧产美韩系列久久99| 免费高清视频精品| 久久99热99| 国产一区二区毛片| 国产精品2024| 色菇凉天天综合网| 在线播放中文一区| 欧美成人精品福利| 亚洲视频一区在线| 免费成人在线视频观看| 粉嫩一区二区三区在线看| 欧美中文字幕亚洲一区二区va在线| 日韩欧美自拍偷拍| 中文字幕一区二区日韩精品绯色| 亚洲h在线观看| 成人一区二区三区在线观看| 欧美日韩中文字幕一区二区| 久久五月婷婷丁香社区| 一区二区三区四区亚洲| 韩国三级在线一区| 91成人免费电影| 久久久av毛片精品| 亚洲国产一区在线观看| 粉嫩一区二区三区性色av| 欧美福利视频一区| 欧美国产日韩a欧美在线观看 | 狠狠色狠狠色综合日日91app|