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

📄 route.cpp

📁 在vc6.0的环境下实现机器人路径规划
💻 CPP
字号:
// Route.cpp : implementation file
//

#include "stdafx.h"
#include "RobotView.h"
#include "Route.h"
#include "MainFrm.h"



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

/////////////////////////////////////////////////////////////////////////////
// Route

IMPLEMENT_DYNCREATE(Route, CView)

Route::Route()
{
}

Route::~Route()
{
}


BEGIN_MESSAGE_MAP(Route, CView)
	//{{AFX_MSG_MAP(Route)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Route drawing

void Route::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
//	CRect rect;
//	GetClientRect(&rect);
	
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// Route diagnostics

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

void Route::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// Route message handlers

void Route::DrawRoute()
{
	/*画出地势高低图*/
	CDC* pDC=GetDC();
	CRobotViewApp* myapp=(CRobotViewApp*)AfxGetApp();
    CMainFrame* mainframe=(CMainFrame*)myapp->m_pMainWnd;
	CBrush brush0;
	brush0.CreateSolidBrush(RGB(255,255,255));
	CBrush brush1;
	brush1.CreateSolidBrush(RGB(247,248,253));
	CBrush brush2;
	brush2.CreateSolidBrush(RGB(234,236,251));
	CBrush brush3;
	brush3.CreateSolidBrush(RGB(223,225,249));
	CBrush brush4;
	brush4.CreateSolidBrush(RGB(205,209,245));
	CBrush brush5;
	brush5.CreateSolidBrush(RGB(192,198,243));
	CBrush brush6;
	brush6.CreateSolidBrush(RGB(179,185,240));
	CBrush brush7;
	brush7.CreateSolidBrush(RGB(165,172,237));
	CBrush brush8;
	brush8.CreateSolidBrush(RGB(149,157,234));
	CBrush brush9;
	brush9.CreateSolidBrush(RGB(134,143,232));
	CBrush brush10;
	brush10.CreateSolidBrush(RGB(121,132,230));
	CBrush brush11;
	brush11.CreateSolidBrush(RGB(105,117,226));
	CBrush brush12;
	brush12.CreateSolidBrush(RGB(94,106,223));
	CBrush brush13;
	brush13.CreateSolidBrush(RGB(79,92,221));
	CBrush brush14;
	brush14.CreateSolidBrush(RGB(63,79,218));
	CBrush brush15;
	brush15.CreateSolidBrush(RGB(50,67,216));
	CBrush brush16;
	brush16.CreateSolidBrush(RGB(40,57,208));
	CBrush brush17;
	brush17.CreateSolidBrush(RGB(38,54,196));
	CBrush brush18;
	brush18.CreateSolidBrush(RGB(35,50,184));
	CBrush brush19;
	brush19.CreateSolidBrush(RGB(33,47,169));
	CBrush brush20;
	brush20.CreateSolidBrush(RGB(3,4,16));

	for(int i=0;i<HMAX;i++)
	{
		for(int j=0;j<WMAX;j++)
		{
			if(mainframe->VirtualMap[i][j]>=0&&mainframe->VirtualMap[i][j]<=2)
			{
				pDC->SelectObject(brush0);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=3&&mainframe->VirtualMap[i][j]<=5)
			{
				pDC->SelectObject(brush1);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=6&&mainframe->VirtualMap[i][j]<=8)
			{
				pDC->SelectObject(brush2);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=9&&mainframe->VirtualMap[i][j]<=11)
			{
				pDC->SelectObject(brush3);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=12&&mainframe->VirtualMap[i][j]<=14)
			{
				pDC->SelectObject(brush4);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=15&&mainframe->VirtualMap[i][j]<=17)
			{
				pDC->SelectObject(brush5);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=18&&mainframe->VirtualMap[i][j]<=20)
			{
				pDC->SelectObject(brush6);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=21&&mainframe->VirtualMap[i][j]<=23)
			{
				pDC->SelectObject(brush7);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=24&&mainframe->VirtualMap[i][j]<=26)
			{
				pDC->SelectObject(brush8);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=27&&mainframe->VirtualMap[i][j]<=29)
			{
				pDC->SelectObject(brush9);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=30&&mainframe->VirtualMap[i][j]<=32)
			{
				pDC->SelectObject(brush10);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=33&&mainframe->VirtualMap[i][j]<=35)
			{
				pDC->SelectObject(brush11);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=36&&mainframe->VirtualMap[i][j]<=38)
			{
				pDC->SelectObject(brush12);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=39&&mainframe->VirtualMap[i][j]<=41)
			{
				pDC->SelectObject(brush13);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=42&&mainframe->VirtualMap[i][j]<=44)
			{
				pDC->SelectObject(brush14);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=45&&mainframe->VirtualMap[i][j]<=47)
			{
				pDC->SelectObject(brush15);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=48&&mainframe->VirtualMap[i][j]<=50)
			{
				pDC->SelectObject(brush16);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=51&&mainframe->VirtualMap[i][j]<=53)
			{
				pDC->SelectObject(brush17);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=54&&mainframe->VirtualMap[i][j]<=56)
			{
				pDC->SelectObject(brush18);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=57&&mainframe->VirtualMap[i][j]<=59)
			{
				pDC->SelectObject(brush19);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
			else if(mainframe->VirtualMap[i][j]>=60&&mainframe->VirtualMap[i][j]<=80)
			{
				pDC->SelectObject(brush20);
				pDC->Rectangle(CRect(j*RWIDTH/20,i*RHEIGHT/12,(j+1)*RWIDTH/20,(i+1)*RHEIGHT/12));
			}
		}
	}

	/*画出路径*/
	CPen newPen(PS_DASHDOTDOT,3,/*(COLORREF)0*/RGB(244,244,51));
	for(int k=0;k<(mainframe->best.pathlength)-1;k++)
	{
		pDC->SelectObject(&newPen);
		pDC->MoveTo((mainframe->best.pos[k].y*RWIDTH/20+RWIDTH/40),(mainframe->best.pos[k].x*RHEIGHT/12+RHEIGHT/24));
		pDC->LineTo((mainframe->best.pos[k+1].y*RWIDTH/20+RWIDTH/40),(mainframe->best.pos[k+1].x*RHEIGHT/12+RHEIGHT/24));
	}

}

⌨️ 快捷键说明

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