⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmazeview.cpp

📁 我写的迷宫与搜路算法,自动生成随即迷宫,然后自动从起点到终点运动
💻 CPP
📖 第 1 页 / 共 2 页
字号:
						a=(int)(((float)rand() / (float)RAND_MAX) * 2 );
						b=(int)(((float)rand() / (float)RAND_MAX) * 2 ) ;
						c=(int)(((float)rand() / (float)RAND_MAX) * 2 ) ;
						d=(int)(((float)rand() / (float)RAND_MAX) * 2 ) ;
					}

					a==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1));

					b==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE);

					c==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1)+LSIZE);

					d==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE-1);
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1)+LSIZE-1);
					break;
				default:
//					setcolor(5);
					dc.SelectObject(&pen);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					break;
			}
		}
	}
//	setcolor(5);
	dc.SelectObject(&pen);
	dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
	dc.Rectangle(HEAD,HEAD,HEAD+LSIZE+(LSIZE-1)*41,HEAD+LSIZE+(LSIZE-1)*41);
}


void CWMazeView::Creat_Maze4(CClientDC &dc){

    CPen pen(PS_SOLID,1,RGB(128,0,128));
	CPen pen2(PS_SOLID,1,RGB(0,0,0));
	for(int i=0;i<42;i++){
		for(int j=0;j<42;j++){
			switch (Creat_Maze[i][j]){
				case 0:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					break;
				case 1:
					dc.SelectObject(&pen);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					break;
				case 2:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE);
					break;
				case 3:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1));
					break;
				case 4:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE-1);
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1)+LSIZE-1);
					break;
				case 5:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1)+LSIZE);
					break;
				case 6:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE);
		
	
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1));
					break;
				case 7:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1));

					dc.MoveTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1)+LSIZE);
					break;
				case 8:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE);

					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE-1);
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1)+LSIZE-1);
					break;
/*				case 9:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE-1);
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1)+LSIZE-1);
			
					dc.MoveTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1)+LSIZE);
					break;
				case 10:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE);

					dc.MoveTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1)+LSIZE);
					break;
				case 11:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1));

					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE-1);
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1)+LSIZE-1);

					break;
				case 12:
					dc.SelectObject(&pen);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen2);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE-1);
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1)+LSIZE-1);
					break;
				case 13:
					dc.SelectObject(&pen);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen2);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE,HEAD+j*(LSIZE-1));
					break;
				case 14:
					dc.SelectObject(&pen);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen2);
					dc.MoveTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1)+LSIZE-1,HEAD+j*(LSIZE-1)+LSIZE);
					break;
				case 15:
					dc.SelectObject(&pen);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1),HEAD+LSIZE+(LSIZE-1)*i,
						HEAD+LSIZE+(LSIZE-1)*j);
					dc.SelectObject(&pen2);
					dc.MoveTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1));
					dc.LineTo(HEAD+i*(LSIZE-1),HEAD+j*(LSIZE-1)+LSIZE);
					break;
*/				default:
					break;
	
			}
	
		}

	}
	dc.SelectObject(&pen);
	dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
	dc.Rectangle(HEAD,HEAD,HEAD+LSIZE+(LSIZE-1)*41,HEAD+LSIZE+(LSIZE-1)*41);

	dc.SelectObject(&pen2);
	dc.MoveTo(HEAD+41*(LSIZE-1)/2+7,HEAD);
	dc.LineTo(HEAD+41*(LSIZE-1)/2+LSIZE+7,HEAD);

	dc.SelectObject(&pen);
	dc.MoveTo(HEAD+41*(LSIZE-1)/2+7,HEAD);
	dc.LineTo(HEAD+41*(LSIZE-1)/2+7,HEAD-LSIZE);

	dc.MoveTo(HEAD+41*(LSIZE-1)/2+LSIZE+6,HEAD);
	dc.LineTo(HEAD+41*(LSIZE-1)/2+LSIZE+6,HEAD-LSIZE);
}


void CWMazeView::OnDraw(CDC* pDC)
{
	CWMazeDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

//	int Top=10;
//	int Bottom=10;
	CClientDC dc(this);
	dc.FillSolidRect(0,0,820,800,RGB(0,0,0));

	Creat_Maze4(dc);
 


//	dc.Rectangle(HEAD+LSIZE*Bottom,HEAD+LSIZE*39,HEAD+LSIZE+LSIZE*Bottom,HEAD+LSIZE*40);
//	dc.Rectangle(HEAD+LSIZE*Top,HEAD,HEAD+LSIZE+LSIZE*Top,HEAD+LSIZE);
//	for(int i=0;i<10;i++){
//		dc.Rectangle(CRect(INIT_X+i+20,INIT_Y,INIT_X+SINGLE,INIT_Y+SINGLE));//画矩形
//	}

//	CPen pen(PS_SOLID,1,RGB(0,255,0));//构造画笔对象
//    dc.SelectObject(&pen);//将画笔选入DC
//	dc.MoveTo(100,100);
//	dc.LineTo(500,500);
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CWMazeView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CWMazeView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CWMazeView message handlers

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -