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

📄 findwaydlg.h

📁 国内的一个A*算法演示
💻 H
字号:
// findwayDlg.h : 头文件
//

#pragma once
#include "Object.h"

#define MAX_POLYGON 200
#define MAX_WAY 1000
#define TIMELIMITE 2000
// CfindwayDlg 对话框
class CfindwayDlg : public CDialog
{
// 构造
public:
	CfindwayDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_FINDWAY_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持
private:
	POINT m_CurPoint;
	// 当前状态用于给用户提示
	CString m_strHint;
	CString m_strHint1;
	CString m_strHint2;
    //当前状态 
	/************************************************************************/
	/* 0:初始、预备状态
	   1:给多边形画线
	   2:画多边形中心点
	/************************************************************************/
	int m_nState;
	//多边形
	ObjPolygon m_Polygon[MAX_POLYGON];
	//多边形个数
	int m_nNumPolygons;
	ObjPolygon m_CurPolygon;
	int m_nCurPoint;//当前操作的点
	CDC *m_pDC;
	//寻路的开始和结束点
	POINT m_startPos,m_endPos;
	// 路径长度
	float m_fWayLength;
	//开始寻路时间
	DWORD m_dwStart;
	// 检测直线AB是否有和多边形相交
	bool CheckPolygon(POINT a, POINT b);
	// 求路径
	bool Run(ObjPointLen StartObj,POINT EndPos,POINT* pWay,float *lWayLength,int *nWayNum);
	// 计算检测圆的半径 使用多边形m_CurPolygon
	int ComputeRadius(POINT point);
	// 绘画所有多边形
	bool DrawPolygon(void);
	// 检测点P是否位于某个多边形内
	ObjPolygon * CheckPointInsidePolygon(POINT p);
	// 调整终点位置
	POINT AdjustEndPos(ObjPolygon *curPoly);
	// 显示临时路径信息
	bool m_DisplayTempWay;
	// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:	
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnRun32774();
	afx_msg void OnExit32773();
	afx_msg void OnOpenFile32771();
	afx_msg void OnSaveFile32772();
	afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
	afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
	//清除重画
	afx_msg void OnBnClickedButton2();
	//显示所有调整点
	afx_msg void OnBnClickedButton1();
	afx_msg void OnFileNew32776();
	// 显示临时路径信息
	afx_msg void OnSystemDisplaytempway();
	// 调整点距离在ADJUST函数使用
	int m_nAdjLen;
	// 角度限制值
	int m_nAdjArc;
	// 小于限制角度的调整点距离
	int m_nAdjLenBig;
	//调节权值比例的变量
	float m_bl;
};

⌨️ 快捷键说明

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