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

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

?? canvasframe.cpp

?? 用雙向鏈表尋找迷宮路徑
?? CPP
字號:
// canvasFrame.cpp : implementation file
//

#include "stdafx.h"
#include "canvasr.h"
#include "canvasFrame.h"

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

struct list          
{
	int m;
	int n;
	struct list *next;  
	struct list *back; 
};
typedef struct list node; 
typedef node *pointer;    


/////////////////////////////////////////////////////////////////////////////
// canvasFrame

IMPLEMENT_DYNCREATE(canvasFrame, CFrameWnd)

int maze[8][8] = {1,1,1,1,1,1,1,1,2,0,0,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,1,1,0,1,0,1,0,0,1,1,3,1,1,1,1,1,1};
BOOL pass[8][8];
int i,j,m,n,lastm,lastn;
BOOL start= true,search= true,go;
pointer ptr,preptr,first;
char str[10];

canvasFrame::canvasFrame()
{
	RECT rect;
	Create(NULL,"繪圖視窗",WS_OVERLAPPEDWINDOW,CRect(0,0,330,380));
	CClientDC dc(this);
	int width = dc.GetDeviceCaps(HORZRES);
	int height = dc.GetDeviceCaps(VERTRES);
	GetWindowRect( &rect );
	width = ( width - ( rect.right - rect.left ))/2 ;
	height = (height - (rect.bottom - rect.top ))/2 ;
	MoveWindow( width , height , (rect.right - rect.left ) , (rect.bottom - rect.top ) ,true);
	mdc = new CDC;
	mdc->CreateCompatibleDC(&dc);
	tile = new CBitmap;
	ball = new CBitmap;
	tile->m_hObject = (HBITMAP)::LoadImage(NULL,"tile.bmp",IMAGE_BITMAP,40,40,LR_LOADFROMFILE); 
	ball->m_hObject = (HBITMAP)::LoadImage(NULL,"ball.bmp",IMAGE_BITMAP,40,40,LR_LOADFROMFILE); 
	for(i=0;i<7;i++)          
	{
		for(j=0;j<7;j++)
			if(maze[i][j]==2)
				break;
		if(maze[i][j]==2)
			break;
	}
	m = i;
	n = j;
	ptr = (pointer)malloc(sizeof(node));
	ptr->m = m;
	ptr->n = n;
	ptr->next = NULL;
	ptr->back = NULL;
	first = ptr;
}

canvasFrame::~canvasFrame()
{
	delete tile;
	delete ball;
	delete mdc;
	ptr = first;
	while(ptr->next)
	{
		ptr = ptr->next;
		free(ptr->back);
	}
	free(ptr);
}


BEGIN_MESSAGE_MAP(canvasFrame, CFrameWnd)
	//{{AFX_MSG_MAP(canvasFrame)
	ON_WM_TIMER()
	ON_WM_CREATE()
	ON_WM_KEYDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// canvasFrame message handlers

void canvasFrame::OnTimer(UINT nIDEvent) 
{
	if(start)
		Start();     
	else
	{
		if(search)
			Search(); 
		if(go)
			Go();      

	}
	CFrameWnd::OnTimer(nIDEvent);
}

void canvasFrame::Start()
{
	CClientDC dc(this);
	mdc->SelectObject(tile);
	for(i=0;i<=7;i++)
		for(j=0;j<=7;j++)
			if(maze[i][j] == 1)
				dc.BitBlt(j*40,i*40,40,40,mdc,0,0,SRCCOPY);
	mdc->SelectObject(ball);
	dc.BitBlt(ptr->n*40,ptr->m*40,40,40,mdc,0,0,SRCCOPY);
	start = false;
	lastn = ptr->n;
	lastm = ptr->m;
}

void canvasFrame::Go()
{
	CClientDC dc(this);
	m = ptr->m;
	n = ptr->n;
	mdc->SelectObject(tile);
	for(i=0;i<=7;i++)
		for(j=0;j<=7;j++)
			if(maze[i][j] == 1)
				dc.BitBlt(j*40,i*40,40,40,mdc,0,0,SRCCOPY);
	mdc->SelectObject(ball);
	dc.BitBlt(n*40,m*40,40,40,mdc,0,0,SRCCOPY);
	if(maze[m][n] == 3)
	{
		dc.TextOut(120,320,"最短路徑");
		go = false;
	}
	else
		ptr = ptr->next;
}

void canvasFrame::Search()
{
	CClientDC dc(this);
	mdc->SelectObject(tile);
	for(i=0;i<=7;i++)
		for(j=0;j<=7;j++)
			if(maze[i][j] == 1)
				dc.BitBlt(j*40,i*40,40,40,mdc,0,0,SRCCOPY);
	mdc->SelectObject(ball);
	lastn = ptr->n;
	lastm = ptr->m;
	if(maze[m+1][n]==1)   
		if(maze[m][n+1] == 1)   
			if(maze[m][n-1] ==1)   
				if(maze[m-1][n] == 1)  
				{
					if(ptr->back != NULL)
					{
						ptr = ptr->back;
						free(ptr->next);
						ptr->next = NULL;
					}
					m = ptr->m;
					n = ptr->n;
				}
				else
					if(pass[m-1][n])  
					{
						if(ptr->back != NULL)
						{
							ptr = ptr->back;
							free(ptr->next);
							ptr->next = NULL;
						}
						m = ptr->m;
						n = ptr->n;
					}
					else
					{
						m-=1;   
						ptr->next = (pointer)malloc(sizeof(node));
						ptr->next->m = m;
						ptr->next->n = n;
						preptr = ptr;
						ptr->next->next = NULL;
						pass[m][n] = true;
						ptr = ptr->next;
						ptr->back = preptr;
					}
			else
				if(pass[m][n-1])   
					if(maze[m-1][n] == 1)   
					{
						if(ptr->back != NULL)
						{
							ptr = ptr->back;
							free(ptr->next);
							ptr->next = NULL;		
						}
						m = ptr->m;
						n = ptr->n;
					}
					else
						if(pass[m-1][n])   
						{
							if(ptr->back != NULL)
							{
								ptr = ptr->back;
								free(ptr->next);
								ptr->next = NULL;
							}
							m = ptr->m;
							n = ptr->n;
						}
						else
						{
							m-=1;    
							ptr->next = (pointer)malloc(sizeof(node));
							ptr->next->m = m;
							ptr->next->n = n;
							preptr = ptr;
							ptr->next->next = NULL;
							pass[m][n] = true;
							ptr = ptr->next;
							ptr->back = preptr;
						}
				else
				{
					n-=1; 
					ptr->next = (pointer)malloc(sizeof(node));
					ptr->next->m = m;
					ptr->next->n = n;
					preptr = ptr;
					ptr->next->next = NULL;
					pass[m][n] = true;
					ptr = ptr->next;
					ptr->back = preptr;
				}
		else
			if(pass[m][n+1])    
				if(maze[m][n-1] ==1)  
					if(maze[m-1][n] == 1)  
					{
						if(ptr->back != NULL)
						{
							ptr = ptr->back;
							free(ptr->next);
							ptr->next = NULL;
						}
						m = ptr->m;
						n = ptr->n;
					}
					else
						if(pass[m-1][n])   
						{
							if(ptr->back != NULL)
							{
								ptr = ptr->back;
								free(ptr->next);
								ptr->next = NULL;
							}
							m = ptr->m;
							n = ptr->n;
						}
						else
						{
							m-=1;   
							ptr->next = (pointer)malloc(sizeof(node));
							ptr->next->m = m;
							ptr->next->n = n;
							preptr = ptr;
							ptr->next->next = NULL;
							pass[m][n] = true;
							ptr = ptr->next;
							ptr->back = preptr;
						}
				else
					if(pass[m][n-1])  
						if(maze[m-1][n] == 1) 
						{
							if(ptr->back != NULL)
							{
								ptr = ptr->back;
								free(ptr->next);
								ptr->next = NULL;
							}
							m = ptr->m;
							n = ptr->n;
						}
						else
							if(pass[m-1][n])  
							{
								if(ptr->back != NULL)
								{
									ptr = ptr->back;
									free(ptr->next);
									ptr->next = NULL;
								}
								m = ptr->m;
								n = ptr->n;
							}
							else
							{
								m-=1;  
								ptr->next = (pointer)malloc(sizeof(node));
								ptr->next->m = m;
								ptr->next->n = n;
								preptr = ptr;
								ptr->next->next = NULL;
								pass[m][n] = true;
								ptr = ptr->next;
								ptr->back = preptr;
							}
					else
					{
						n-=1;   
						ptr->next = (pointer)malloc(sizeof(node));
						ptr->next->m = m;
						ptr->next->n = n;
						preptr = ptr;
						ptr->next->next = NULL;
						pass[m][n] = true;
						ptr = ptr->next;
						ptr->back = preptr;
					}
			else
			{
				n+=1;  
				ptr->next = (pointer)malloc(sizeof(node));
				ptr->next->m = m;
				ptr->next->n = n;
				preptr = ptr;
				ptr->next->next = NULL;
				pass[m][n] = true;
				ptr = ptr->next;
				ptr->back = preptr;
			}
	else
		if(pass[m+1][n])  
			if(maze[m][n+1] == 1)   
				if(maze[m][n-1] ==1) 
					if(maze[m-1][n] == 1)  
					{
						if(ptr->back != NULL)
						{
							ptr = ptr->back;
							free(ptr->next);
							ptr->next = NULL;
						}
						m = ptr->m;
						n = ptr->n;
					}
					else
						if(pass[m-1][n])  
						{
							if(ptr->back != NULL)
							{
								ptr = ptr->back;
								free(ptr->next);
								ptr->next = NULL;
							}
							m = ptr->m;
							n = ptr->n;
						}
						else
						{
							m-=1;   
							ptr->next = (pointer)malloc(sizeof(node));
							ptr->next->m = m;
							ptr->next->n = n;
							preptr = ptr;
							ptr->next->next = NULL;
							pass[m][n] = true;
							ptr = ptr->next;
							ptr->back = preptr;
						}
				else
					if(pass[m][n-1])  
						if(maze[m-1][n] == 1) 
						{
							if(ptr->back != NULL)
							{
								ptr = ptr->back;
								free(ptr->next);
								ptr->next = NULL;
							}
							m = ptr->m;
							n = ptr->n;
						}
						else
							if(pass[m-1][n])   
							{
								if(ptr->back != NULL)
								{
									ptr = ptr->back;
									free(ptr->next);
									ptr->next = NULL;
								}
								m = ptr->m;
								n = ptr->n;
							}
							else
							{
								m-=1; 
								ptr->next = (pointer)malloc(sizeof(node));
								ptr->next->m = m;
								ptr->next->n = n;
								preptr = ptr;
								ptr->next->next = NULL;
								pass[m][n] = true;
								ptr = ptr->next;
								ptr->back = preptr;
							}
					else
					{
						n-=1;   
						ptr->next = (pointer)malloc(sizeof(node));
						ptr->next->m = m;
						ptr->next->n = n;
						preptr = ptr;
						ptr->next->next = NULL;
						pass[m][n] = true;
						ptr = ptr->next;
						ptr->back = preptr;
					}
			else
				if(pass[m][n+1])    
					if(maze[m][n-1] ==1) 
						if(maze[m-1][n] == 1)  
						{
							if(ptr->back != NULL)
							{
								ptr = ptr->back;
								free(ptr->next);
								ptr->next = NULL;
							}
							m = ptr->m;
							n = ptr->n;
						}
						else
							if(pass[m-1][n])   
							{
								if(ptr->back != NULL)
								{
									ptr = ptr->back;
									free(ptr->next);
									ptr->next = NULL;
								}
								m = ptr->m;
								n = ptr->n;
							}
							else
							{
								m-=1;   
								ptr->next = (pointer)malloc(sizeof(node));
								ptr->next->m = m;
								ptr->next->n = n;
								preptr = ptr;
								ptr->next->next = NULL;
								pass[m][n] = true;
								ptr = ptr->next;
								ptr->back = preptr;
							}
					else
						if(pass[m][n-1])   
							if(maze[m-1][n] == 1)  
							{
								if(ptr->back != NULL)
								{
									ptr = ptr->back;
									free(ptr->next);
									ptr->next = NULL;
								}
								m = ptr->m;
								n = ptr->n;
							}
							else
								if(pass[m-1][n])  
								{
									if(ptr->back != NULL)
									{
										ptr = ptr->back;
										free(ptr->next);
										ptr->next = NULL;
									}
									m = ptr->m;
									n = ptr->n;
								}
								else
								{
									m-=1;  
									ptr->next = (pointer)malloc(sizeof(node));
									ptr->next->m = m;
									ptr->next->n = n;
									preptr = ptr;
									ptr->next->next = NULL;
									pass[m][n] = true;
									ptr = ptr->next;
									ptr->back = preptr;
								}
						else
						{
							n-=1;  
							ptr->next = (pointer)malloc(sizeof(node));
							ptr->next->m = m;
							ptr->next->n = n;
							preptr = ptr;
							ptr->next->next = NULL;
							pass[m][n] = true;
							ptr = ptr->next;
							ptr->back = preptr;
						}
				else
				{
					n+=1;  
					ptr->next = (pointer)malloc(sizeof(node));
					ptr->next->m = m;
					ptr->next->n = n;
					preptr = ptr;
					ptr->next->next = NULL;
					pass[m][n] = true;
					ptr = ptr->next;
					ptr->back = preptr;
				}
		else
		{
			m+=1;    
			ptr->next = (pointer)malloc(sizeof(node));
			ptr->next->m = m;
			ptr->next->n = n;
			preptr = ptr;
			ptr->next->next = NULL;
			pass[m][n] = true;
			ptr = ptr->next;
			ptr->back = preptr;
		}
		dc.BitBlt(lastn*40,lastm*40,40,40,mdc,0,0,WHITENESS);
		dc.BitBlt(ptr->n*40,ptr->m*40,40,40,mdc,0,0,SRCCOPY);
		if(ptr->back == NULL)
		{
			dc.TextOut(120,320,"找不到出口");
			search = false;
		}
		if(maze[m][n] == 3)
		{
			dc.TextOut(120,320,"找到出口 ");
			search = false;
		}
}
int canvasFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;	
	SetTimer(1,100,NULL);	
	return 0;
}

void canvasFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	CClientDC dc(this);
	if(nChar == VK_ESCAPE)
		PostMessage(WM_CLOSE);
	if(nChar == VK_F1)
	{
		start = true;
		search = true;
		go = false;
		for(i=0;i<=8;i++)     
			for(j=0;j<=8;j++)
				pass[i][j] = false;
		dc.BitBlt(ptr->n*40,ptr->m*40,40,40,mdc,0,0,WHITENESS);
		while(ptr->back)       
		{
			ptr = ptr->back;
			free(ptr->next);
			ptr->next = NULL;
		}
		m = ptr->m;
		n = ptr->n;
	}
	if(nChar == VK_F2)
	{
		if(ptr->back == NULL)
		 dc.TextOut(120,320,"迷宮無出口");
		else
		{
			ptr = first;    
			go = true;
			search = false;
		}
	}
	CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清在线精品一区| 欧美日韩激情一区| 国产精品久久久爽爽爽麻豆色哟哟| 精品一区二区在线免费观看| 欧美精品一区二区三区久久久 | 日韩欧美一级二级| 裸体歌舞表演一区二区| 精品99999| 欧美一区二区久久久| 日韩经典一区二区| wwwwxxxxx欧美| av亚洲精华国产精华精| 亚洲日本在线a| 欧美日韩国产精品自在自线| 蜜臀va亚洲va欧美va天堂 | 国产98色在线|日韩| 国产精品久久久久久亚洲毛片| 色乱码一区二区三区88| 日本不卡123| 国产精品视频麻豆| 欧美日韩高清一区| 国产黄色精品网站| 夜色激情一区二区| 日韩亚洲欧美在线观看| 成人黄色av网站在线| 亚洲高清在线精品| 欧美经典一区二区| 91精品欧美福利在线观看| 国产成人高清视频| 日韩主播视频在线| 中文字幕一区二区视频| 欧美一级片在线看| 91香蕉视频mp4| 久久国产精品露脸对白| 亚洲色图制服诱惑| 精品国产不卡一区二区三区| 色又黄又爽网站www久久| 韩国av一区二区三区在线观看| 亚洲欧美偷拍三级| 久久久国产午夜精品| 欧美嫩在线观看| 91免费精品国自产拍在线不卡| 麻豆国产欧美日韩综合精品二区| 亚洲欧美日韩国产手机在线 | 日韩免费电影一区| 色偷偷88欧美精品久久久| 国产一区二区中文字幕| 亚洲福利一区二区三区| 中文字幕制服丝袜成人av| 欧美精品一区二区三| 欧美日韩国产影片| 在线免费观看日韩欧美| 成人性色生活片| 精品在线播放午夜| 三级一区在线视频先锋 | 亚洲天堂中文字幕| 欧美精品一区二区三区蜜臀| 欧美精品久久久久久久多人混战| 91色九色蝌蚪| 成人黄页在线观看| 粉嫩一区二区三区在线看| 国产在线不卡一区| 久久成人免费电影| 久久不见久久见免费视频7| 亚洲成人黄色小说| 一二三四社区欧美黄| 亚洲美女屁股眼交| 亚洲精品伦理在线| 一区二区三区四区五区视频在线观看 | 久久久久国产精品麻豆ai换脸| 欧美久久久久免费| 7777女厕盗摄久久久| 在线播放视频一区| 69精品人人人人| 欧美一区二区三区爱爱| 日韩一区二区在线观看视频| 欧美一区二区国产| 日韩一区二区三区电影在线观看| 欧美精品日韩精品| 日韩欧美久久久| 精品国产凹凸成av人网站| 久久久亚洲精华液精华液精华液| 久久久久久久久蜜桃| 久久久久久99久久久精品网站| 国产色婷婷亚洲99精品小说| 国产精品美日韩| 亚洲欧美日韩人成在线播放| 亚洲精品高清视频在线观看| 亚洲午夜视频在线| 日本aⅴ亚洲精品中文乱码| 精品一区二区三区日韩| 国产成人综合视频| 91丨九色丨黑人外教| 色国产综合视频| 91精品国产欧美一区二区成人| 欧美一区二区三级| 欧美激情一区二区三区不卡 | 精品久久久久一区二区国产| 精品国产三级a在线观看| 精品国产免费久久| 成人欧美一区二区三区黑人麻豆| 亚洲自拍另类综合| 日本网站在线观看一区二区三区 | 8v天堂国产在线一区二区| 欧美电影免费观看高清完整版在线 | 成人免费电影视频| 91尤物视频在线观看| 欧美日韩日日夜夜| 久久亚洲免费视频| 一级中文字幕一区二区| 久久国产剧场电影| 91麻豆成人久久精品二区三区| 7777精品伊人久久久大香线蕉完整版 | 成人禁用看黄a在线| 日韩欧美精品在线| 国产精品电影一区二区| 午夜激情一区二区| 国产一本一道久久香蕉| 91成人网在线| 久久精品一区二区三区不卡牛牛| 亚洲桃色在线一区| 国内精品视频666| 欧美图区在线视频| 久久九九久精品国产免费直播| 亚洲制服欧美中文字幕中文字幕| 精品一区二区免费在线观看| 日本道色综合久久| 久久精品夜色噜噜亚洲a∨| 亚洲综合一二三区| 国产91精品免费| 欧美一卡2卡3卡4卡| 成人欧美一区二区三区小说| 激情深爱一区二区| 欧美精品日韩综合在线| 成人欧美一区二区三区白人| 韩国理伦片一区二区三区在线播放| 在线影视一区二区三区| 国产午夜精品一区二区三区嫩草 | 久久亚洲精品小早川怜子| 一区二区三区在线影院| 国产精品一二三| 欧美电影在哪看比较好| 亚洲色欲色欲www| 国产一区美女在线| 91麻豆精品久久久久蜜臀| 亚洲欧洲精品一区二区三区不卡| 精品一区二区三区免费毛片爱| 欧美日韩免费一区二区三区视频| 国产精品久久久99| 国产不卡在线播放| 久久久欧美精品sm网站| 久久99国产精品久久| 国产精品视频yy9299一区| 国产精品白丝av| 欧美不卡视频一区| 久草精品在线观看| 日韩美女主播在线视频一区二区三区| 亚洲国产你懂的| 欧美日韩亚洲不卡| 亚洲午夜激情网站| 在线观看亚洲专区| 一区二区三区四区高清精品免费观看| 99久久久久久| 亚洲你懂的在线视频| 99久久99久久久精品齐齐| 国产精品入口麻豆原神| 国产91精品免费| 国产精品久久影院| 972aa.com艺术欧美| 亚洲乱码国产乱码精品精98午夜| 99麻豆久久久国产精品免费优播| 中文字幕av免费专区久久| 粉嫩蜜臀av国产精品网站| 国产精品久久久久久福利一牛影视| 成人av免费在线播放| 中文字幕一区二区三| 色婷婷精品久久二区二区蜜臂av| 一区二区三区久久久| 欧美性色黄大片| 日本不卡一二三| 精品国产精品网麻豆系列| 国产成人精品网址| 亚洲视频免费在线| 欧美日韩aaaaaa| 国内精品视频666| 国产精品日产欧美久久久久| 一本大道综合伊人精品热热 | 91精品一区二区三区久久久久久| 日韩在线播放一区二区| 亚洲精品免费电影| 777亚洲妇女| 久久99国产乱子伦精品免费| 久久精品亚洲国产奇米99| 成人激情动漫在线观看| 亚洲小说欧美激情另类| 69堂成人精品免费视频| 国产丶欧美丶日本不卡视频| 亚洲欧美一区二区三区极速播放 | 不卡视频在线观看| 香蕉影视欧美成人|