• 大小: 14KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: C/C++
  • 标签: AGV  C++  

资源简介

用C++实现的关于AGV路径规划的程序,在VC6.0中可以运行,需要自己下载graphics.h提供画图支持

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include

using namespace std;

#define  MAX  100
#define  maxD 99999

class CFixedMap
{
public:
    struct  Coordinate
    {
        int x;
        int y;
        int num;
    };//记录点的结构体
    struct combp
    {
        int x1y1;
        int x2y2;
    };//连通点坐标


    struct Combname
    {
        int num1;
        int num2;
    };//连通点名

    public:

        int mVexNum;                   // 顶点数
        int mEdgNum;                   // 边数
        double mMatrix[MAX][MAX];         // 邻接矩阵
        Combname comb[MAX];            //连通点名
        combp cp[MAX];                 //连通点坐标
        Coordinate mVexs[MAX];         // 顶点集合
        int getx(int n1);
        int gety(int n2);
        void Input();//以文件方式输入地图信息
        void ShowMap();//easyx显示地图
};

int CFixedMap::getx(int n1)
{
    int x=0;
    for(int i=0;i        if(n1==mVexs[i].num)
            x=mVexs[i].x;
        return x;
}

int CFixedMap::gety(int n2)
{
    int y=0;
    for(int i=0;i        if(n2==mVexs[i].num)
            y=mVexs[i].y;
        return y;
}

void CFixedMap::Input()
{
    int panju;
    char fname[10]={“map2.txt“};
    cout<<“是否载入默认地图?(1:是,2:否)“;
    cin>>panju;
    if(panju==2)
    {
        cout<<“请输入地图信息文件名:“;
        cin>>fname;
    }
    ifstream file(fname);
    char use1[100];
    char use2[100];
    char use3[100];
    char use4[100];          //use数组用来储存提示信息。
    file>>use1;
    file>>mVexNum;         //端点个数
    file>>use2;
    file>>mEdgNum;         //边数
    file>>use3;
    for(int i=0;i    {
        file>>mVexs[i].num>>mVexs[i].x>>mVexs[i].y;
    }
    file>>use4;
    for(int i=0;i    {
        file>>comb[i].num1>>comb[i].num2;
    }
    file.close();
}


//easyx显示地图
void CFixedMap::ShowMap()
{
    initgraph(800600SHOWCONSOLE| NOCLOSE);     //初始化绘图环境
    setbkcolor(WHITE);      //设置背景色
    cleardevice();          //用背景色清空屏幕
    setfillcolor(BLACK);      //设置填充色
    //画顶点
    for(int i=0;i    {
        fillcircle(mVexs[i].xmVexs[i].y5);
        settextcolor(BLACK);
        char s[MAX];
        sprintf(s “%d“ i+1);
        outtextxy(mVexs[i].x-10mVexs[i].y-20s);
    }
    //给实际连通的顶点连线
    setlinecolor(RGB(000));
    setlinestyle(PS_SOLID6NULL0);
    for(int i=0;i    {
        cp[i].x1=getx(comb[i].num1);
        cp[i].y1=gety(comb[i].num1);
        cp[i].x2=getx(comb[i].num2);
        cp[i].y2=gety(comb[i].num2);
        line(cp[i].x1cp[i].y1cp[i].x2cp[i].y2);
    }
}

class CPathPlan:public CFixedMap
{
public:
    int path[MAX];       //存放最后一个点
    double dist[MAX];         //存放路径距离
    int v0;                //起始点
    int route[40];        //路径
    int rnum;              //路径顶点数
    Coo

评论

共有 条评论