#include"AStar.h"
#include <iostream.h>
#pragma comment(lib,"AStar.lib")
int m[40][40]={
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,1,3,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,1,3,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,
3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,3,3,3,3,1,3,3,1,3,3,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,1,1,1,1,1,1,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
1,3,1,3,1,1,3,3,3,1,1,3,3,1,3,1,3,1,3,3,3,3,3,3,1,3,1,3,3,1,1,3,3,3,1,1,3,1,3,1,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,1,1,1,1,1,1,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,3,3,3,3,1,3,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,3,1,1,1,1,3,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,3,1,1,1,1,3,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,3,1,1,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,3,1,1,1,1,3,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,3,3,3,3,3,3,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,1,1,1,1,1,1,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
1,3,1,3,1,1,3,1,3,1,1,3,3,1,3,1,3,1,3,3,3,3,3,3,1,3,3,3,3,1,1,3,3,3,1,1,3,1,3,1,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,1,3,1,1,1,1,1,1,1,1,3,1,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,3,1,1,1,3,3,1,1,3,3,1,3,3,3,1,3,3,3,3,1,3,3,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,3,3,1,1,1,3,
3,1,1,1,3,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,3,3,1,1,1,3,
3,3,3,3,3,3,1,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,1,3,3,
3,3,3,3,3,3,1,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,1,3,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,3,1,3,3,1,3,3,3,1,3,3,3,3,1,3,1,3,3,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,3,1,3,3,1,3,3,3,1,3,3,3,3,1,3,1,3,3,3,3,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,
3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,3,3,1,1,1,1,1,1,1,1,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
}; //40*40的地图
void main()
{
cout<<"A*模拟迷宫实验."<<endl;
cout<<"徐爱富、游俊杰、方铭、曹惠婷联合制作."<<endl;
LPANode pANode; //定义一个结点指针
AStar astar(40,40); //定义一个AStar类实例,并且设置地图尺寸为40*40
printf("迷宫地图如下:\n");
printf(" “回”表示障碍。\n");
int i,j,x,y;
for (j=0;j<40;j++)
{
for (i=0;i<40;i++)
{
if(m[j][i]==1)
printf(" ");
else
printf("回");
astar.SetBlock(i,j,m[j][i]);//写入地图数据
}
}
printf("选择模式:0自动 ;1 手动\n");
scanf("%d",&x);
if(x==0)
{
astar.SetStart(0,37); //设置寻路的起点
astar.SetDest(36,0); //设置寻路的终点
}
else if(x==1)
{
printf("请输入起点:\n");
printf("x= ");
scanf("%d",&x);
printf("y= ");
scanf("%d",&y);
astar.SetStart(x,y); //设置寻路的起点
printf("请输入终点:\n");
printf("x= ");
scanf("%d",&x);
printf("y= ");
scanf("%d",&y);
astar.SetDest(x,y); //设置寻路的终点
}
else
{
printf("输入错误,请重新输入:\n");
return;
}
astar.SetRange(2,3); //设置Block值当在区间[2,3]内为障碍物,其余都为可通
astar.SetShowAll(false); //设置为4方向寻路
astar.GetRoute(); //计算路径
if (astar.IsFind())
{
cout<<"路径已经找到."<<endl;
cout<<"详细路径如下:"<<endl;
}
else cout<<"没有这样的路径存在."<<endl;
pANode=astar.GetNextStation(); //得到结点的指针(这里是第一个结点,即起点)
while(pANode) //获取每个结点的指针直到pANode为0结束
{
cout<<pANode->x<<","<<pANode->y<<endl;
m[pANode->y][pANode->x]=2;
pANode=astar.GetNextStation();
}
for (j=0;j<40;j++)
{
for (i=0;i<40;i++)
{
if(m[j][i]==1)
printf(" ");
else if(m[j][i]==2)
printf("·");
else
printf("回");
}
}
}
- 1
- 2
前往页