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

📄 wmazeview.cpp

📁 我写的迷宫与搜路算法,自动生成随即迷宫,然后自动从起点到终点运动
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// WMazeView.cpp : implementation of the CWMazeView class
//

#include "stdafx.h"
#include "WMaze.h"
#include"headfile.h"
#include "WMazeDoc.h"
#include "WMazeView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CWMazeView

IMPLEMENT_DYNCREATE(CWMazeView, CView)

BEGIN_MESSAGE_MAP(CWMazeView, CView)
	//{{AFX_MSG_MAP(CWMazeView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}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)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWMazeView construction/destruction

CWMazeView::CWMazeView()
{
	// TODO: add construction code here
	srand((unsigned)time(NULL));
	int random=0;
	for(int i=0;i<42;i++){
		for(int j=0;j<42;j++){
			random=(int)(((float)rand() / (float)RAND_MAX) * 16) ;
			Creat_Maze[i][j]=random;
		}
	}

}

CWMazeView::~CWMazeView()
{
}

BOOL CWMazeView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CWMazeView drawing

void CWMazeView::Creat_Maze1(CClientDC &dc){

    CPen pen(PS_SOLID,1,RGB(255,0,255));
    dc.SelectObject(&pen);
	dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)

	int LINEX=0;
	int LINEY=0;
	for(int i=0;i<40;i++){
		for(int j=0;j<40;j++){
			LINEX=(int)(((float)rand() / (float)RAND_MAX) * 7 );
			LINEY=(int)(((float)rand() / (float)RAND_MAX) * 7 );
			if(LINEX<4){
					dc.MoveTo(HEAD+LSIZE*i,HEAD+LSIZE*j);
					dc.LineTo(HEAD+LSIZE+LSIZE*i,HEAD+LSIZE*j);
			}
			else{
					dc.MoveTo(HEAD+LSIZE*i,HEAD+LSIZE*j);
					dc.LineTo(HEAD+LSIZE+LSIZE*i,HEAD+LSIZE*j);
			}
			if(LINEY<3){
					dc.MoveTo(HEAD+LSIZE*i,HEAD+LSIZE*j);
					dc.LineTo(HEAD+LSIZE*i,HEAD+LSIZE*j+LSIZE);
			}
			else{
					dc.MoveTo(HEAD+LSIZE*i,HEAD+LSIZE*j);
					dc.LineTo(HEAD+LSIZE*i,HEAD+LSIZE*j+LSIZE);
			}
		}
	}

	dc.Rectangle(HEAD,HEAD,HEAD+LSIZE+LSIZE*39,HEAD+LSIZE+LSIZE*39);
}
void CWMazeView::Creat_Maze2(CClientDC &dc){

    CPen pen(PS_SOLID,1,RGB(128,0,128));
	CPen pen2(PS_SOLID,1,RGB(0,0,0));
 //   dc.SelectObject(&pen);
//	dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)


   
	int a,b,c,d;
	int random=0;

	for(int i=0;i<40;i++){
		for(int j=0;j<40;j++){
			random=(int)(((float)rand() / (float)RAND_MAX) * 5 );
			switch (random){
				case 0:
					dc.SelectObject(&pen2);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)

					dc.Rectangle(HEAD+i*LSIZE,HEAD+j*LSIZE,HEAD+LSIZE+LSIZE*i,
						HEAD+LSIZE+LSIZE*j);
					break;
				case 1:
					for(a=0,b=0,c=0,d=0;a+b+d+c!=1;){
						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 ) ;
					}
//					setcolor(a*5);
					a==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE);
//					setcolor(b*5);
					b==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE,HEAD+j*LSIZE+LSIZE);
//					setcolor(c*5);
					c==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE+LSIZE);
//					setcolor(d*5);
					d==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE+LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE+LSIZE);
					break;
				case 2:
					for(a=0,b=0,c=0,d=0;a+b+d+c!=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 ) ;
					}
//					setcolor(a*5);
					a==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE);
//					setcolor(b*5);
					b==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE,HEAD+j*LSIZE+LSIZE);
//					setcolor(c*5);
					c==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE+LSIZE);
//					setcolor(d*5);
					d==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE+LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE+LSIZE);
					break;
				

				case 3:
					for(a=0,b=0,c=0,d=0;a+b+d+c!=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 ) ;
					}
//					setcolor(a*5);
					a==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE);
//					setcolor(b*5);
					b==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE,HEAD+j*LSIZE+LSIZE);
//					setcolor(c*5);
					c==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE+LSIZE);
//					setcolor(d*5);
					d==0?dc.SelectObject(&pen2):dc.SelectObject(&pen);
					dc.MoveTo(HEAD+i*LSIZE,HEAD+j*LSIZE+LSIZE);
					dc.LineTo(HEAD+i*LSIZE+LSIZE,HEAD+j*LSIZE+LSIZE);
					break;
				default:
//					setcolor(5);
					dc.SelectObject(&pen);
					dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
					dc.Rectangle(HEAD+i*LSIZE,HEAD+j*LSIZE,HEAD+LSIZE+LSIZE*i,
						HEAD+LSIZE+LSIZE*j);
					break;
			}
		}
	}
//	setcolor(5);
	dc.SelectObject(&pen);
	dc.SelectStockObject(NULL_BRUSH);//选入空刷子(参数看msdn)
	dc.Rectangle(HEAD,HEAD,HEAD+LSIZE+LSIZE*39,HEAD+LSIZE+LSIZE*39);
}

void CWMazeView::Creat_Maze3(CClientDC &dc){

    CPen pen(PS_SOLID,1,RGB(128,0,128));
	CPen pen2(PS_SOLID,1,RGB(0,0,0));
 	int a,b,c,d;
	int random=0;

	for(int i=0;i<42;i++){
		for(int j=0;j<42;j++){
			random=(int)(((float)rand() / (float)RAND_MAX) * 5 );
			switch (random){
				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:
					for(a=0,b=0,c=0,d=0;a+b+d+c!=1;){
						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;
				case 2:
					for(a=0,b=0,c=0,d=0;a+b+d+c!=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;

				case 3:
					for(a=0,b=0,c=0,d=0;a+b+d+c!=3;){
						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;
				case 4:
					for(a=0,b=0,c=0,d=0;a+b+d+c!=4;){

⌨️ 快捷键说明

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