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

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

?? astar.cpp

?? 用 vc 編 寫 的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
				char buf[4];
				sprintf(buf,"%d", m_element[i][j]->f);
				pDC->TextOut(j*bmMetric2.bmWidth,i*bmMetric2.bmHeight,buf);
			}
		}
	}

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

	*/
	
	if(showMode == 1)
	{
		//顯示搜索過的點(還在open表里面的是紅色,在close表里面的是綠色的)
		for(i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_element[i][j]->f!=-1)
				{
					if(m_element[i][j]->open)
					{
						memDC.SelectObject(&bm3);
						pDC->BitBlt(j*bmMetric2.bmWidth, i*bmMetric2.bmHeight,bmMetric2.bmWidth,bmMetric2.bmHeight,&memDC,0,0,SRCCOPY);
					}
					else if(m_element[i][j]->close)
					{
						memDC.SelectObject(&bm4);
						pDC->BitBlt(j*bmMetric2.bmWidth, i*bmMetric2.bmHeight,bmMetric2.bmWidth,bmMetric2.bmHeight,&memDC,0,0,SRCCOPY);
					}
					//char buf[4];
					//sprintf(buf,"%d", m_element[i][j]->f);
					//pDC->TextOut(j*bmMetric2.bmWidth,i*bmMetric2.bmHeight,buf);
				}
			}
		}
	}


	//用漸變顏色顯示搜索過的點
	if(showMode == 2)
	{
		//先找出估值的最大值
		double max = 0;
		for(i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_element[i][j]->f > max)
				{
					max = m_element[i][j]->f;
				}
			}
		}
		//已經(jīng)找到估值的最大值

		const int colorBeg = 70;
		int totalStep = (255 - colorBeg) * 5;
		int R, G, B, temp;
		for(int i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_element[i][j]->f != -1)
				{
					int curStep = (int)(m_element[i][j]->f/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é)束描繪漸變色


	//用漸變顏色一步一步顯示搜索過的點
	if(showMode == 3)
	{
		//先找出估值的最大值
		double max = 0;
		for(i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_element[i][j]->f > max)
				{
					max = m_element[i][j]->f;
				}
			}
		}
		//已經(jīng)找到估值的最大值

		const int colorBeg = 70;
		int totalStep = (255 - colorBeg) * 5;
		int R, G, B, temp;
		for(int i=0;i<Height;i++)
		{
			for(int j=0;j<Width;j++)
			{
				if(m_element[i][j]->f != -1)
				{
					int curStep = (int)(m_element[i][j]->f/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é)束

	//顯示最短路徑
	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);
		while(tempHead!=NULL)
		{
			pDC->LineTo(tempHead->x * bmMetric2.bmWidth+bmMetric2.bmWidth/2 , tempHead->y * bmMetric2.bmHeight+bmMetric2.bmHeight/2);
			tempHead = tempHead->parent;
		}
		pDC->SelectObject(p_pen);
		pen.DeleteObject();
	}


	

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

	//return time;//返回搜索路徑所需要的時間
}

void CAStar::prepareForStepByStep()
{
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			if(map[i][j]==0)
			{
				head = m_element[i][j];
				head->x=j;
				head->y=i;
				head->fore=NULL;
				head->next=NULL;
				head->g=0;
				//head->h=
				head->close=0;
				head->open=1;
				//head->f=
				head->parent=NULL;
			}
			else if(map[i][j]==-3)
			{
				targetX=j;
				targetY=i;
			}
		}
	}
}

int CAStar::searchThePathStepByStep()
{
	if(head!=NULL)
	{
		as_node *tempHead;
		
		if(head->next==NULL)
		{
			tempHead=NULL;
		}
		else
		{
			tempHead=head->next;//head下一個節(jié)點作為新的鏈表頭指針
			
			head->next->fore=NULL;
		}
		m_element[head->y][head->x]->open=0;
		m_element[head->y][head->x]->close=1;//把head放進close表
		
		if(map[head->y][head->x+1]!=-1)//如果臨近的方格不是墻壁
		{
			if(m_element[head->y][head->x+1]->close)
			{}
			else if(m_element[head->y][head->x+1]->open)
			{
				int temp = m_element[head->y][head->x]->g+1+m_element[head->y][head->x+1]->h;
				if(m_element[head->y][head->x+1]->f > temp)
				{
					m_element[head->y][head->x+1]->g = m_element[head->y][head->x]->g+1;
					m_element[head->y][head->x+1]->f = temp;
					m_element[head->y][head->x+1]->parent = m_element[head->y][head->x];
					tempHead=adjustNode(tempHead,m_element[head->y][head->x+1]);
				}
			}	
			else
			{
				if(head->x+1==targetX && head->y==targetY){return 1;}//找到終點!//修改這里
				
				//as_node *node=new as_node;
				as_node *node=m_element[head->y][head->x+1];
				node->x=head->x+1;//修改這里
				node->y=head->y;//修改這里
				node->open=1;
				node->close=0;
				node->parent=m_element[head->y][head->x];
				node->g=node->parent->g+1;
				node->h=abs(node->x - targetX) + abs(node->y - targetY);
				node->f=node->g + node->h;
				tempHead=insertNode(tempHead,node);
			}
			//最后記住把head放進close表
		}
		
		if(map[head->y][head->x-1]!=-1)//如果臨近的方格不是墻壁
		{
			if(m_element[head->y][head->x-1]->close)
			{}
			else if(m_element[head->y][head->x-1]->open)
			{
				int temp = m_element[head->y][head->x]->g+1+m_element[head->y][head->x-1]->h;
				if(m_element[head->y][head->x-1]->f > temp)
				{
					m_element[head->y][head->x-1]->g = m_element[head->y][head->x]->g+1;
					m_element[head->y][head->x-1]->f = temp;
					m_element[head->y][head->x-1]->parent=m_element[head->y][head->x];
					tempHead=adjustNode(tempHead,m_element[head->y][head->x-1]);
				}
			}	
			else
			{
				if(head->x-1==targetX && head->y==targetY){return 1;}//找到終點!//修改這里
				
				//as_node *node=new as_node;
				as_node *node=m_element[head->y][head->x-1];
				node->x=head->x-1;//修改這里
				node->y=head->y;//修改這里
				node->open=1;
				node->close=0;
				node->parent=m_element[head->y][head->x];
				node->g=node->parent->g+1;
				node->h=abs(node->x - targetX) + abs(node->y - targetY);
				node->f=node->g + node->h;
				tempHead=insertNode(tempHead,node);
			}
			//最后記住把head放進close表
		}
		
		if(map[head->y+1][head->x]!=-1)//如果臨近的方格不是墻壁
		{
			if(m_element[head->y+1][head->x]->close)
			{}
			else if(m_element[head->y+1][head->x]->open)
			{
				int temp = m_element[head->y][head->x]->g+1+m_element[head->y+1][head->x]->h;
				if(m_element[head->y+1][head->x]->f > temp)
				{
					m_element[head->y+1][head->x]->g = m_element[head->y][head->x]->g+1;
					m_element[head->y+1][head->x]->f = temp;
					m_element[head->y+1][head->x]->parent=m_element[head->y+1][head->x];
					tempHead=adjustNode(tempHead,m_element[head->y+1][head->x]);
				}
			}	
			else
			{
				if(head->x==targetX && head->y+1==targetY){return 1;}//找到終點!//修改這里
				
				//as_node *node=new as_node;
				as_node *node=m_element[head->y+1][head->x];
				node->x=head->x;//修改這里
				node->y=head->y+1;//修改這里
				node->open=1;
				node->close=0;
				node->parent=m_element[head->y][head->x];
				node->g=node->parent->g+1;
				node->h=abs(node->x - targetX) + abs(node->y - targetY);
				node->f=node->g + node->h;
				tempHead=insertNode(tempHead,node);
			}
			//最后記住把head放進close表
		}
		
		
		if(map[head->y-1][head->x]!=-1)//如果臨近的方格不是墻壁
		{
			if(m_element[head->y-1][head->x]->close)
			{}
			else if(m_element[head->y-1][head->x]->open)
			{
				int temp = m_element[head->y][head->x]->g+1+m_element[head->y-1][head->x]->h;
				if(m_element[head->y-1][head->x]->f > temp)
				{
					m_element[head->y-1][head->x]->g = m_element[head->y][head->x]->g+1;
					m_element[head->y-1][head->x]->f = temp;
					m_element[head->y-1][head->x]->parent=m_element[head->y-1][head->x];
					tempHead=adjustNode(tempHead,m_element[head->y-1][head->x]);
				}
			}	
			else
			{
				if(head->x==targetX && head->y-1==targetY){return 1;}//找到終點!//修改這里
				
				//as_node *node=new as_node;
				as_node *node=m_element[head->y-1][head->x];
				node->x=head->x;//修改這里
				node->y=head->y-1;//修改這里
				node->open=1;
				node->close=0;
				node->parent=m_element[head->y][head->x];
				node->g=node->parent->g+1;
				node->h=abs(node->x - targetX) + abs(node->y - targetY);
				node->f=node->g + node->h;
				tempHead=insertNode(tempHead,node);
			}
			//最后記住把head放進close表
		}		
		head=tempHead;
		return 2;
	}
	return 0;//如果head是NULL表示open表已為空,所以找不到路徑
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区三区国产精品 | 国产一区二区看久久| 精品国精品自拍自在线| 91在线一区二区三区| 免费观看久久久4p| 亚洲精品国产视频| 国产欧美日韩卡一| 日韩精品一区二区三区老鸭窝| 99久久久国产精品| 国产美女视频91| 麻豆免费精品视频| 亚洲一二三级电影| 亚洲天堂a在线| 国产日产欧产精品推荐色| 日韩一区二区三区电影在线观看| 色综合久久88色综合天天6| 黄页视频在线91| 五月天激情综合| 一区二区三区日韩欧美| 国产精品乱码一区二三区小蝌蚪| 欧美大白屁股肥臀xxxxxx| 欧美视频精品在线观看| 91黄色免费观看| 99久久精品情趣| 成人精品视频一区二区三区尤物| 日本不卡123| 日韩经典一区二区| 午夜精品久久久久久久99水蜜桃| 一区二区三区在线视频免费| 亚洲视频 欧洲视频| 中文字幕日本不卡| 国产精品丝袜久久久久久app| 精品99一区二区三区| 欧美一区二区精品| 欧美一区二区三区在线电影| 欧美麻豆精品久久久久久| 欧美日韩久久一区二区| 在线播放欧美女士性生活| 欧美日韩久久久一区| 正在播放一区二区| 欧美mv和日韩mv国产网站| 欧美变态口味重另类| 久久人人超碰精品| 久久久久9999亚洲精品| 久久美女高清视频| 国产午夜精品久久久久久久| 久久精品夜夜夜夜久久| 欧美国产精品专区| 中文字幕欧美一| 亚洲已满18点击进入久久| 亚洲一区二区三区四区的| 亚洲成人动漫在线观看| 另类的小说在线视频另类成人小视频在线 | 免费成人av在线| 久久精品av麻豆的观看方式| 久久99国产精品久久99| 国产精品一级黄| 99久久久精品| 欧美日韩电影一区| 精品999在线播放| 国产精品乱码一区二三区小蝌蚪| 亚洲日本在线天堂| 亚洲国产成人av网| 国产毛片精品视频| 91色乱码一区二区三区| 欧美裸体一区二区三区| 久久综合久色欧美综合狠狠| 中文字幕不卡在线播放| 亚洲一区二区三区美女| 美女网站视频久久| 99视频一区二区| 7777精品伊人久久久大香线蕉| 欧美刺激午夜性久久久久久久| 国产精品久久久久久户外露出 | 青青草成人在线观看| 激情综合网av| 9l国产精品久久久久麻豆| 欧美日韩视频在线一区二区| 精品999久久久| 一区二区国产视频| 经典三级视频一区| 91丨九色丨蝌蚪富婆spa| 51精品视频一区二区三区| 亚洲国产精品精华液2区45| 亚洲国产综合在线| 国产成人免费在线| 欧美日本国产视频| 国产精品久久精品日日| 日韩成人午夜电影| av影院午夜一区| 精品国产乱码久久久久久久久| 亚洲日穴在线视频| 国产精品18久久久久| 欧美日韩不卡在线| 亚洲欧洲av在线| 精品一区二区在线看| 在线免费精品视频| 欧美国产欧美亚州国产日韩mv天天看完整 | 大胆亚洲人体视频| 欧美一级久久久久久久大片| 国产精品午夜免费| 久久99热99| 欧美少妇bbb| 亚洲免费观看在线视频| 国产很黄免费观看久久| 日韩视频免费观看高清完整版| 亚洲三级在线看| 国产大陆a不卡| 精品久久人人做人人爰| 丝袜亚洲另类欧美| 在线一区二区视频| 亚洲视频在线观看一区| 国产精品一卡二卡在线观看| 欧美一二三四在线| 婷婷久久综合九色综合伊人色| 色综合欧美在线| 国产精品污www在线观看| 国产在线播精品第三| 日韩美女一区二区三区四区| 日韩和欧美一区二区三区| 在线观看视频91| 亚洲综合在线观看视频| 色综合天天综合网国产成人综合天| 久久综合网色—综合色88| 蜜桃视频在线一区| 欧美成va人片在线观看| 日本vs亚洲vs韩国一区三区二区| 欧美片在线播放| 日韩av午夜在线观看| 欧美一区二区在线看| 日韩高清中文字幕一区| 8x8x8国产精品| 婷婷开心激情综合| 日韩欧美高清一区| 久久成人av少妇免费| 日韩欧美综合一区| 久久成人久久爱| 国产亚洲一区二区三区在线观看| 国产一区三区三区| 国产亚洲人成网站| 成人免费观看视频| 亚洲同性gay激情无套| 一本色道久久综合精品竹菊| 亚洲黄一区二区三区| 在线观看欧美日本| 亚洲va天堂va国产va久| 欧美一区二区啪啪| 国产精品一二三四区| 国产精品妹子av| 91麻豆产精品久久久久久| 一级中文字幕一区二区| 56国语精品自产拍在线观看| 首页国产丝袜综合| 精品国产伦理网| 成人a级免费电影| 亚洲资源中文字幕| 日韩欧美国产电影| 丁香激情综合国产| 亚洲一区在线免费观看| 欧美电影在哪看比较好| 激情图区综合网| 亚洲人成网站影音先锋播放| 在线观看www91| 精品一区二区日韩| 亚洲视频在线一区观看| 欧美电影在线免费观看| 国产传媒一区在线| 亚洲图片欧美色图| 久久人人97超碰com| 色欧美日韩亚洲| 激情综合五月婷婷| 亚洲精品欧美二区三区中文字幕| 91精品国产麻豆国产自产在线 | 欧美日韩黄色影视| 国内精品在线播放| 亚洲乱码一区二区三区在线观看| 91精品欧美久久久久久动漫| 成人永久免费视频| 爽爽淫人综合网网站| 国产精品天干天干在观线| 欧美性大战久久| 高清不卡一区二区在线| 午夜亚洲国产au精品一区二区| 久久网站最新地址| 欧美日韩午夜在线| 国产成人久久精品77777最新版本| 亚洲一区视频在线| 欧美国产日韩亚洲一区| 91精品国产乱| 91香蕉视频mp4| 精品一区二区在线观看| 亚洲国产精品久久艾草纯爱| 日本一区二区三区dvd视频在线| 欧美日韩夫妻久久| 91片黄在线观看| 国产激情一区二区三区桃花岛亚洲 | 国产精品毛片无遮挡高清| 日韩欧美卡一卡二| 欧美色精品天天在线观看视频| 国产盗摄视频一区二区三区|