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

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

?? searchpathview.cpp

?? 用 vc 編 寫 的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// SearchPathView.cpp : implementation of the CSearchPathView class
//

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

#include "SearchPathDoc.h"
#include "SearchPathView.h"

#include "MAP.h"

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



//const int Height=15;
//const int Width=22;


#define Height 120
#define Width 176

extern map[Height][Width];
extern map1[Height][Width];
extern map2[Height][Width];
extern map3[Height][Width];
extern map4[Height][Width];
extern map5[Height][Width];

/////////////////////////////////////////////////////////////////////////////
// CSearchPathView

IMPLEMENT_DYNCREATE(CSearchPathView, CView)

BEGIN_MESSAGE_MAP(CSearchPathView, CView)
	//{{AFX_MSG_MAP(CSearchPathView)
	ON_COMMAND(IDM_LIST_ASTAR, OnListAstar)
	ON_COMMAND(IDM_LIST_WATER, OnListWater)
	ON_COMMAND(IDM_MAP1, OnMap1)
	ON_COMMAND(IDM_MAP2, OnMap2)
	ON_COMMAND(IDM_MAP3, OnMap3)
	ON_COMMAND(IDM_MAP4, OnMap4)
	ON_COMMAND(IDM_MAP5, OnMap5)
	ON_COMMAND(IDM_MAP6, OnMap6)
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(IDM_LIST_WAVE, OnListWave)
	ON_COMMAND(IDM_LIST_ASSTAR, OnListAsstar)
	ON_COMMAND(IDM_LIST_BothWAVE, OnLISTBothWAVE)
	ON_COMMAND(IDM_MAKEMAP, OnMakemap)
	ON_COMMAND(IDM_SETBE, OnSetBE)
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_COMMAND(IDM_SAVEMAP, OnSaveMap)
	ON_COMMAND(IDM_SHOWNODE, OnShowNode)
	ON_COMMAND(IDM_SHOWPATH, OnShowPath)
	ON_COMMAND(IDM_READMAP, OnReadMap)
	ON_COMMAND(IDM_SHOWSHADE, OnShowShade)
	ON_COMMAND(IDM_DEMOASTAR, OnDemoAStar)
	ON_COMMAND(IDM_DEMOWAVE, OnDemoWave)
	ON_COMMAND(IDM_DEMOBOTHWAVE, OnDemoBothWave)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

	ON_COMMAND(IDM_SaveMap1, OnSaveMap1)
	ON_COMMAND(IDM_SaveMap2, OnSaveMap2)
	ON_COMMAND(IDM_SaveMap3, OnSaveMap3)
	ON_COMMAND(IDM_SaveMap4, OnSaveMap4)
	ON_COMMAND(IDM_SaveMap5, OnSaveMap5)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSearchPathView construction/destruction

CSearchPathView::CSearchPathView()
{
	// TODO: add construction code here
	
	AStar=NULL;
	Water=NULL;
	Wave=NULL;
	ASStar=NULL;
	BothWave=NULL;
	m_SearchSort = 0;//which alg are you use.
	m_ifOpen = 0;//等于一的時候就可以輸入起點和終點
	m_ifDouble = 0;//表示沒有雙擊
	m_ifMakemap = 0;//表示不能編輯地圖
	m_showMode = 0;//不顯示搜索過的節點

	m_numSaveMap = 0;//儲存地圖的數目初始值為0



	
}

CSearchPathView::~CSearchPathView()
{
}

BOOL CSearchPathView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	
	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CSearchPathView drawing

void CSearchPathView::OnDraw(CDC* pDC)
{
	CSearchPathDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	
	
	if(m_SearchSort==0)
	{
		CBitmap bm1,bm2,bm3, *pbm;
		BITMAP bmMetric1,bmMetric2;
		
		bm1.LoadBitmap(IDB_BITMAP7);
		bm2.LoadBitmap(IDB_BITMAP12);//起點
		bm3.LoadBitmap(IDB_BITMAP13);//終點
		
		bm1.GetBitmap(&bmMetric1);
		bm2.GetBitmap(&bmMetric2);
		
		CDC memDC;
		memDC.CreateCompatibleDC(pDC);
		pbm = memDC.SelectObject(&bm1);
		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(&bm2);
					pDC->BitBlt(j*bmMetric2.bmHeight, i*bmMetric2.bmWidth,bmMetric2.bmWidth,bmMetric2.bmHeight,&memDC,0,0,SRCCOPY);
				}
				else if(map[i][j]==-3)
				{
					memDC.SelectObject(&bm3);
					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();
	}
	else if(m_SearchSort==1)
	{
		AStar->showThePath(pDC , m_showMode);
	}
	else if(m_SearchSort==2)
	{
		Water->showThePath(pDC , m_showMode);		
	}
	else if(m_SearchSort==3)
	{
		Wave->showThePath(pDC , m_showMode);		
	}
	else if(m_SearchSort==4)
	{
		ASStar->showThePath(pDC, m_showMode);		
	}
	else if(m_SearchSort==5)
	{
		BothWave->showThePath(pDC , m_showMode);		
	}

}

/////////////////////////////////////////////////////////////////////////////
// CSearchPathView printing

BOOL CSearchPathView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CSearchPathView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CSearchPathView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CSearchPathView diagnostics

#ifdef _DEBUG
void CSearchPathView::AssertValid() const
{
	CView::AssertValid();
}

void CSearchPathView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CSearchPathDoc* CSearchPathView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSearchPathDoc)));
	return (CSearchPathDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSearchPathView message handlers



void CSearchPathView::OnListAstar()
{
	// TODO: Add your command handler code here
	m_ifOpen=0;
	m_ifMakemap = 0;
	if(AStar!=NULL)delete AStar;
	AStar = new CAStar;

	long time;
	time=GetTickCount();
	for(int i=0;i<100;i++)
	{	
		if(AStar!=NULL)delete AStar;
		AStar = new CAStar;
		if(!AStar->searchThePath())
		{
			MessageBox("找不到路徑");
			return;
		}
	}
	time = (GetTickCount()-time)/100;//執行100次來計算平均時間時間了. 

	char buf[10];
	sprintf(buf,"耗時%dms",time);
	MessageBox(buf);

	m_SearchSort=1;
	Invalidate();
}

void CSearchPathView::OnListWater() 
{
	// TODO: Add your command handler code here
	m_ifOpen=0;
	m_ifMakemap = 0;
	if(Water!=NULL)delete Water;

	Water = new CWater;

	long time;
	time=GetTickCount();

	for(int i=0;i<100;i++)
	{	
		if(Water!=NULL)delete Water;
		Water = new CWater;
		if(!Water->searchThePath())
		{
			MessageBox("找不到路徑");
			return;
		}
	}
	

	time = (GetTickCount()-time)/100;//這就是運行的時間了. 

	char buf[10];
	sprintf(buf,"耗時%dms",time);
	MessageBox(buf);

	m_SearchSort=2;
	Invalidate();
}



void CSearchPathView::OnListWave() 
{
	// TODO: Add your command handler code here
	m_ifOpen=0;
	m_ifMakemap = 0;
	if(Wave!=NULL)delete Wave;

	Wave = new CWave;

	long time;
	time = GetTickCount();
	for(int i=0;i<100;i++)
	{	
		if(Wave!=NULL)delete Wave;
		Wave = new CWave;
		if(!Wave->searchThePath())
		{
			MessageBox("找不到路徑");
			return;
		}
	}
	time = (GetTickCount()-time)/100;//這就是運行的時間了. 

	char buf[10];
	sprintf(buf,"耗時%dms",time);
	MessageBox(buf);

	m_SearchSort=3;
	Invalidate();
}

void CSearchPathView::OnListAsstar() 
{
	// TODO: Add your command handler code here
	m_ifOpen=0;
	m_ifMakemap = 0;

	long time;
	time=GetTickCount();
	for(int i=0;i<100;i++)
	{	
		if(ASStar!=NULL)delete ASStar;
		ASStar = new CASStar;
		if(!ASStar->searchThePath())
		{
			MessageBox("找不到路徑");
			return;
		}
	}
	//Water->SearchThePath();
	time = (GetTickCount()-time)/100;//這就是運行的時間了. 

	char buf[10];
	sprintf(buf,"耗時%dms",time);
	MessageBox(buf);

	m_SearchSort=4;
	Invalidate();
}

void CSearchPathView::OnLISTBothWAVE() 
{
	// TODO: Add your command handler code here
	m_ifOpen=0;
	m_ifMakemap = 0;
	if(Wave!=NULL)delete BothWave;

	BothWave = new CBothWave;

	long time;
	time = GetTickCount();
	for(int i=0;i<100;i++)
	{	
		if(BothWave!=NULL)delete BothWave;
		BothWave = new CBothWave;
		if(!BothWave->searchThePath())
		{
			MessageBox("找不到路徑");
			return;
		}
	}
	time = (GetTickCount()-time)/100;//這就是運行的時間了. 

	char buf[10];
	sprintf(buf,"耗時%dms",time);
	MessageBox(buf);

	m_SearchSort=5;
	Invalidate();
}



void CSearchPathView::OnMap1() 
{
	// TODO: Add your command handler code here
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			map[i][j]=map1[i][j];
		}
	}
	m_SearchSort=0;
	m_ifOpen=0;
	m_ifMakemap = 0;
	Invalidate();
}

void CSearchPathView::OnMap2() 
{
	// TODO: Add your command handler code here
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			map[i][j]=map2[i][j];
		}
	}
	m_SearchSort=0;
	m_ifOpen=0;
	m_ifMakemap = 0;
	Invalidate();
}

void CSearchPathView::OnMap3() 
{
	// TODO: Add your command handler code here
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			map[i][j]=map3[i][j];
		}
	}
	m_SearchSort=0;
	m_ifOpen=0;
	m_ifMakemap = 0;
	Invalidate();
}

void CSearchPathView::OnMap4() 
{
	// TODO: Add your command handler code here
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			map[i][j]=map4[i][j];
		}
	}
	m_SearchSort=0;
	m_ifOpen = 0;
	m_ifMakemap = 0;
	Invalidate();
}

void CSearchPathView::OnMap5() 
{
	// TODO: Add your command handler code here
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			map[i][j]=map5[i][j];
		}
	}
	m_SearchSort=0;
	m_ifOpen=0;
	m_ifMakemap = 0;
	Invalidate();
}

void CSearchPathView::OnMap6() 
{
	// TODO: Add your command handler code here
	for(int i=0;i<Height;i++)
	{
		for(int j=0;j<Width;j++)
		{
			map[i][j]=map6[i][j];
		}
	}
	m_SearchSort=0;
	m_ifOpen=0;
	m_ifMakemap = 0;
	Invalidate();
}

void CSearchPathView::OnSetBE() 
{
	// TODO: Add your command handler code here
	m_SearchSort = 0;//如果畫面上顯示搜索節點和路徑,則把其清除
	m_ifMakemap = 0;//關閉制作地圖設置
	m_ifOpen = 1;//開啟設置起點和終點設置
	Invalidate();
}

void CSearchPathView::OnMakemap() 
{
	// TODO: Add your command handler code here
	m_SearchSort = 0;//如果畫面上顯示搜索節點和路徑,則把其清除
	m_ifOpen = 0;//關閉起點和終點的設置
	m_ifMakemap = 1;//開啟地圖的設置
	Invalidate();
}


void CSearchPathView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_ifOpen)
	{
		int x,y;			
		x = point.x/5;
		y = point.y/5;
		if(m_ifDouble==0)//如果是第一次點擊鼠標,那就設置起始點的坐標
		{

			for(int i=0;i<Height;i++)
			{
				for(int j=0;j<Width;j++)
				{
					if(map[i][j]==0)//改變原來的起點
					{
						map[i][j]=-4;
					}
				}
			}
			map[y][x]=0;
			m_ifDouble=1;
			Invalidate();//使窗口重繪
		}
		else if(m_ifDouble==1)
		{

			for(int i=0;i<Height;i++)
			{
				for(int j=0;j<Width;j++)
				{
					if(map[i][j]==-3)//改變原來的終點
					{
						map[i][j]=-4;
					}
				}
			}
			map[y][x]=-3;
			m_ifDouble=0;
			Invalidate();//使窗口重繪
		}
	}
	else if(m_ifMakemap == 1)//如果目前進入制作地圖的模式
	{
		m_ifDouble = 0;//第二次點擊修改起點和終點,從改起點開始
		int x,y;			
		x = point.x/5;
		y = point.y/5;
		if(map[y][x] == -1)
		{
			m_ModeOfMakeMap = map[y][x] = -4;
		}
		else if(map[y][x] == -4)
		{
			m_ModeOfMakeMap = map[y][x] = -1;
		}
		m_ifLBTUp = 0;//左鍵沒有松開
		Invalidate();//使窗口重繪
	}

	
	
	


	CView::OnLButtonDown(nFlags, point);
}






void CSearchPathView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_ifMakemap == 1)//如果目前進入制作地圖的模式
	{
		m_ifLBTUp = 1;
	}

	CView::OnLButtonUp(nFlags, point);
}

void CSearchPathView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_ifMakemap == 1)//如果目前進入制作地圖的模式

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产裸体歌舞团一区二区| 国产成人综合亚洲网站| 亚洲尤物在线视频观看| 欧美日韩国产精品成人| 成人福利视频在线看| 免费观看91视频大全| 欧美xxxxx牲另类人与| 国产一区二区三区av电影| 亚洲精品国产一区二区精华液 | 国产一区二区美女| 国产午夜精品久久久久久久 | 一本一道波多野结衣一区二区| 亚洲一区二区三区视频在线播放| 国产亚洲精品aa午夜观看| 色哟哟国产精品免费观看| 国内精品国产成人国产三级粉色| 亚洲人妖av一区二区| 久久久99久久| 91精品国产色综合久久不卡电影 | 亚洲一区视频在线观看视频| 精品国产精品一区二区夜夜嗨| 性做久久久久久免费观看欧美| 中文字幕一区免费在线观看| 国产亚洲综合在线| 精品欧美一区二区久久 | 日韩avvvv在线播放| 亚洲国产美国国产综合一区二区| 最新国产の精品合集bt伙计| 亚洲视频在线观看一区| 亚洲精品菠萝久久久久久久| 一区二区在线观看视频在线观看| 国产精品久久影院| 久久综合国产精品| 亚洲黄色小说网站| 美女性感视频久久| 91丨九色丨蝌蚪富婆spa| 91精品国产综合久久精品app| 欧美狂野另类xxxxoooo| jlzzjlzz亚洲女人18| 欧美xxx久久| 亚洲欧美日韩久久精品| 欧美军同video69gay| 久久欧美一区二区| 国产剧情一区二区| 精品粉嫩超白一线天av| 国产真实乱对白精彩久久| 欧美日韩激情在线| **欧美大码日韩| 免费国产亚洲视频| 欧美亚洲动漫制服丝袜| 精品噜噜噜噜久久久久久久久试看 | 欧美日韩黄色影视| 国产精品三级av| 蜜臀久久99精品久久久画质超高清| 国产在线精品免费| 欧美一区日本一区韩国一区| 2017欧美狠狠色| 亚洲成人免费影院| 91一区二区三区在线观看| 91精品黄色片免费大全| 一色屋精品亚洲香蕉网站| 国产在线不卡一区| 精品久久人人做人人爰| 麻豆视频观看网址久久| 欧美色精品在线视频| 视频在线观看一区| 欧美婷婷六月丁香综合色| 欧美韩国一区二区| a在线播放不卡| 亚洲婷婷在线视频| 日本乱人伦aⅴ精品| 亚洲人吸女人奶水| 成人激情图片网| 中文久久乱码一区二区| 国产mv日韩mv欧美| 椎名由奈av一区二区三区| 91网站最新网址| 一区二区三区四区不卡视频| 91色porny蝌蚪| 亚洲成人自拍偷拍| 精品欧美一区二区在线观看| 国产一区二区三区免费看| 久久亚区不卡日本| 99久久免费精品高清特色大片| 亚洲欧美日韩在线不卡| 91麻豆精品国产91久久久资源速度 | 国产精品女上位| 在线看一区二区| 久久成人久久鬼色| 日韩av在线播放中文字幕| 国产亚洲视频系列| 欧美性猛交xxxx黑人交| aaa亚洲精品一二三区| 免费观看久久久4p| 日韩国产一区二| 夜夜操天天操亚洲| 午夜视频一区二区| 蜜桃视频在线观看一区二区| 亚洲成人精品一区二区| 午夜精品福利一区二区三区av| 亚洲丝袜制服诱惑| 欧美日韩亚洲不卡| 97精品久久久久中文字幕| 韩国av一区二区三区四区| 丝袜亚洲另类欧美| 亚洲综合图片区| 亚洲精品中文字幕乱码三区| 国产欧美综合在线| 久久蜜臀中文字幕| 91精品在线免费| 国产.欧美.日韩| 国产一区二区三区在线观看免费| 日韩电影在线观看电影| 亚洲综合精品久久| 亚洲午夜激情网页| 亚洲一区视频在线观看视频| 尤物av一区二区| 一区二区三区蜜桃网| 亚洲图片欧美综合| 美女一区二区久久| 国产自产2019最新不卡| 国产精品911| 色噜噜狠狠成人网p站| 欧美性猛交一区二区三区精品 | 日韩电影一二三区| 精久久久久久久久久久| 99这里都是精品| 欧美精品色综合| 国产偷国产偷亚洲高清人白洁| 国产偷v国产偷v亚洲高清| 亚洲天堂久久久久久久| 三级欧美在线一区| 国产精品香蕉一区二区三区| 99精品国产99久久久久久白柏 | 色婷婷av一区二区三区之一色屋| 在线日韩av片| 国产偷国产偷精品高清尤物| 一区二区三区四区不卡在线| 国产老肥熟一区二区三区| 精品视频资源站| 日本一区二区三区在线观看| 日韩综合在线视频| 成人教育av在线| 精品国产1区二区| 亚洲激情图片一区| 波多野结衣亚洲| 国产亚洲精品中文字幕| 免费不卡在线视频| 欧美在线播放高清精品| 国产精品短视频| 成人性生交大片免费看视频在线| 欧美人狂配大交3d怪物一区| 一区二区三区毛片| 91福利资源站| 青青草原综合久久大伊人精品优势| 久久99国产精品久久99| 3d成人h动漫网站入口| 手机精品视频在线观看| 欧美喷潮久久久xxxxx| 亚洲高清一区二区三区| 欧美亚洲动漫制服丝袜| 日一区二区三区| 日韩一区二区三区电影| 麻豆精品在线视频| 国产三区在线成人av| 91在线国产观看| 亚洲成人手机在线| 日韩美女视频在线| k8久久久一区二区三区| 亚洲人成精品久久久久久| 欧美一区二区三区免费| 国产精品亚洲一区二区三区在线| 国产精品网站一区| 欧美亚男人的天堂| 国产精品一区二区三区网站| 国产日产欧美精品一区二区三区| eeuss影院一区二区三区| 午夜一区二区三区视频| 久久久精品黄色| 欧洲精品中文字幕| 成人黄色av网站在线| 日韩主播视频在线| 亚洲男人的天堂av| 精品国产第一区二区三区观看体验| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品美女久久久久av爽李琼| 91精品91久久久中77777| 高清国产一区二区三区| 免费成人在线观看视频| 亚洲高清免费在线| 亚洲一区在线免费观看| 亚洲欧洲成人精品av97| 久久精品一二三| 亚洲精品一区二区在线观看| 欧美疯狂做受xxxx富婆| 91久久精品一区二区三| 91香蕉视频在线| 色狠狠色狠狠综合| 色综合一个色综合| 欧美性三三影院|