-
大小: 1.73MB文件类型: .zip金币: 1下载: 0 次发布日期: 2023-08-11
- 语言: C/C++
- 标签:
资源简介
在已知AGV运行的地图(可手动输入)和AGV运行速度的情况下实现单台AGV路径规划的最短路径算法,并动态显示AGV的运行。同时给出了两个地点两台AGV的自动分配最短路径规划的算法并动态显示。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 100
#define maxD 99999
class Matrix
{
private:
double matrix[MAX][MAX];
public:
double getm (int aint b)
{
return matrix[a][b];
}
void change (int aint bdouble x)
{
matrix[a][b]=x;
}
};
Matrix mat;
float ma(float afloat b)
{
if (a>b)
return a;
else
return b;
}
float mi(float afloat bfloat cfloat d)
{
float q[4];
q[0]=a;q[1]=b;q[2]=c;q[3]=d;
for(int i=0;i<4;i++)
{
if (q[0]>q[i])
q[0]=q[i];
}
return q[0];
}
struct Coordinate
{
int x;
int y;
int num;
};//记录点的结构体
class CFixedMap
{
private:
struct combp
{
int x1y1;
int x2y2;
};//连通点坐标
struct Combname
{
int num1;
int num2;
};//连通点名
combp cp[MAX]; //连通点坐标
public:
Matrix *matr;
CFixedMap ()
{
matr=&mat;
}
int mEdgNum;
Combname comb[MAX]; //连通点名
int mVexNum; // 顶点数
double mMatrix[MAX][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]={“map.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(i=0;i {
file>>comb[i].num1>>comb[i].num2;
}
file.close();
}
//easyx显示地图
void CFixedMap::ShowMap()
{
initgraph(850850SHOWCONSOLE| NOCLOSE); //初始化绘图环境
setwritemode(R2_COPYPEN);
setbkcolor(BLACK); //设置背景色
cleardevice(); //用背景色清空屏幕
setfillcolor(WHITE); //设置填充色
//给实际连通的顶点连线
setlinecolor(WHITE);
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);
}
//画顶点
for(i=0;i {
fillcircle(mVexs[i].xmVexs[i].y5);
settextcolor(BLACK);
char s[MAX];
sprintf(s “%d“ i+1);
settextcolor(YELLOW);
outtextxy(mVexs[i].x+20mVexs[i].y-20s);
}
}
class CPathPlan:public CFixedMap
{
private:
int panduan;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-06-18 09:35 程序\
文件 20206 2019-06-18 09:03 程序\AGV.cpp
文件 3365 2019-06-28 19:36 程序\AGV.dsp
文件 514 2019-06-28 19:38 程序\AGV.dsw
文件 41984 2019-06-28 19:38 程序\AGV.ncb
文件 48640 2019-06-28 19:38 程序\AGV.opt
文件 30059 2019-06-28 19:36 程序\AGV.plg
目录 0 2019-06-28 19:36 程序\Debug\
文件 340059 2019-06-28 19:36 程序\Debug\AGV.exe
文件 480680 2019-06-28 19:36 程序\Debug\AGV.ilk
文件 67407 2019-06-28 19:36 程序\Debug\AGV.obj
文件 4206576 2019-06-28 19:36 程序\Debug\AGV.pch
文件 574464 2019-06-28 19:36 程序\Debug\AGV.pdb
文件 181248 2019-06-28 19:36 程序\Debug\vc60.idb
文件 102400 2019-06-28 19:36 程序\Debug\vc60.pdb
文件 941 2019-06-09 20:25 程序\map.txt
- 上一篇:vC++编程精选100
- 下一篇:最简单的C语言俄罗斯方块
评论
共有 条评论