A*算法寻路算法(最短路径???)代码文件3
2004-07-21 17:27
453 查看
// myfindgo.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include "find_path.h"
#include "windows.h"
#include "mmsystem.h"
#pragma comment(lib, "winmm.lib")
class test_map
{
#define MAP_W_MAX 1000
#define MAP_H_MAX 1000
public:
test_map()
{
memset(map, 0, sizeof(map));
}
static bool go_test(int x, int y)
{
if (x < 0 || y < 0
|| x >= MAP_W_MAX
|| y >= MAP_H_MAX
) return false;
if (0 != map[x][y]) return false;
return true;
};
static bool map[MAP_W_MAX][MAP_H_MAX];
};
bool test_map::map[MAP_W_MAX][MAP_H_MAX];
int x0 = 2;
int y0 = 2;
int x1 = 1;
int y1 = 1;
void readmap()
{
FILE *f;
f = fopen("c://tmp//map.txt","r");
if (NULL == f) return;
int x = 0;
int y = 0;
fscanf(f, "%d, %d/n", &x, &y);
for (int j = 0; j < y; j++)
{
char line[1024] = {0};
fgets(line, x + 1, f);
for (int i = 0; i < x; i++)
{
if (' ' != line[i]) test_map::map[i][j] = 1;
if ('s' == line[i])
{
x0 = i;
y0 = j;
test_map::map[i][j] = 0;
}
if ('e' == line[i])
{
x1 = i;
y1 = j;
test_map::map[i][j] = 0;
}
}
}
fclose(f);
}
int main(int argc, char* argv[])
{
test_map map;
//--初始化地图
//--不可到达的点
//map.map[0][0] = 1;
map.map[2][1] = 1;
map.map[3][1] = 1;
map.map[1][2] = 1;
map.map[3][2] = 1;
map.map[0][2] = 1;
readmap();
find_pathAB fp;
fp.init(100, 25, test_map::go_test);
int z;
DWORD t1 = timeGetTime();
//--寻路
{
for (int i = 0; i < 1000; i++)
z = fp.go(x0, y0, x1, y1);
}
DWORD t2 = timeGetTime();
DWORD t = t2 - t1;
//--打印路径
for (int i = 0; i <= fp.path_t; i++)
{
printf("x=%d y=%d/r/n"
, fp.path_p[i].x
, fp.path_p[i].y);
}
printf("path_t=%d time_t=%d(ms)/r/n", fp.path_t, t);
getch();
return 0;
}
使用到的文件c://tmp//map.txt内容如下
80,24
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
o o
o o
o s oooooooooooooo o
o o o
ooooooooooo o o
o o ooooooo oooooooooooooo oooooooo o
o oooooo o oooo o o o
o o o ooo ooo o
o oooo oooo o
o oooooooooooooooooooooooooooooooooooooooooooooo
o o
o o
o o
oooooooooooooooooooooooooooooooooooooooooooo o
o o ooooooooooo
o o ooooooo oooooooo o
o o o o o o
o ooooooooooo oooooooooo o o o
o oe ooo o o o
o ooooo o o o o
o o o o
o o o o o
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
//
#include "stdafx.h"
#include
#include "find_path.h"
#include "windows.h"
#include "mmsystem.h"
#pragma comment(lib, "winmm.lib")
class test_map
{
#define MAP_W_MAX 1000
#define MAP_H_MAX 1000
public:
test_map()
{
memset(map, 0, sizeof(map));
}
static bool go_test(int x, int y)
{
if (x < 0 || y < 0
|| x >= MAP_W_MAX
|| y >= MAP_H_MAX
) return false;
if (0 != map[x][y]) return false;
return true;
};
static bool map[MAP_W_MAX][MAP_H_MAX];
};
bool test_map::map[MAP_W_MAX][MAP_H_MAX];
int x0 = 2;
int y0 = 2;
int x1 = 1;
int y1 = 1;
void readmap()
{
FILE *f;
f = fopen("c://tmp//map.txt","r");
if (NULL == f) return;
int x = 0;
int y = 0;
fscanf(f, "%d, %d/n", &x, &y);
for (int j = 0; j < y; j++)
{
char line[1024] = {0};
fgets(line, x + 1, f);
for (int i = 0; i < x; i++)
{
if (' ' != line[i]) test_map::map[i][j] = 1;
if ('s' == line[i])
{
x0 = i;
y0 = j;
test_map::map[i][j] = 0;
}
if ('e' == line[i])
{
x1 = i;
y1 = j;
test_map::map[i][j] = 0;
}
}
}
fclose(f);
}
int main(int argc, char* argv[])
{
test_map map;
//--初始化地图
//--不可到达的点
//map.map[0][0] = 1;
map.map[2][1] = 1;
map.map[3][1] = 1;
map.map[1][2] = 1;
map.map[3][2] = 1;
map.map[0][2] = 1;
readmap();
find_pathAB fp;
fp.init(100, 25, test_map::go_test);
int z;
DWORD t1 = timeGetTime();
//--寻路
{
for (int i = 0; i < 1000; i++)
z = fp.go(x0, y0, x1, y1);
}
DWORD t2 = timeGetTime();
DWORD t = t2 - t1;
//--打印路径
for (int i = 0; i <= fp.path_t; i++)
{
printf("x=%d y=%d/r/n"
, fp.path_p[i].x
, fp.path_p[i].y);
}
printf("path_t=%d time_t=%d(ms)/r/n", fp.path_t, t);
getch();
return 0;
}
使用到的文件c://tmp//map.txt内容如下
80,24
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
o o
o o
o s oooooooooooooo o
o o o
ooooooooooo o o
o o ooooooo oooooooooooooo oooooooo o
o oooooo o oooo o o o
o o o ooo ooo o
o oooo oooo o
o oooooooooooooooooooooooooooooooooooooooooooooo
o o
o o
o o
oooooooooooooooooooooooooooooooooooooooooooo o
o o ooooooooooo
o o ooooooo oooooooo o
o o o o o o
o ooooooooooo oooooooooo o o o
o oe ooo o o o
o ooooo o o o o
o o o o
o o o o o
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
相关文章推荐
- A*算法寻路算法(最短路径???)代码文件1
- A*算法寻路算法(最短路径???)代码文件2
- java对【配置文件的读取】与【读配置文件时的路径问题】代码总结
- 图论中最短路径各算法的精典代码片段-来自ACM
- PHP获取文件绝对路径的代码(上一级目录)
- 迪杰斯特拉算法求最短路径 C++代码实现
- iOS 拖进项目的文件代码获取路径为nil
- C数据结构(文件操作,随机数,排序,栈和队列,图和遍历,最小生成树,最短路径)程序例子
- hdu3790最短路径问题(迪杰斯特拉算法+详解+代码)
- linux下APUE的代码测试文件路径配置
- 看数据结构写代码(47)迪杰斯特拉最短路径算法
- 看数据结构写代码(48) 弗洛伊德最短路径
- 图论:最短路径搜索--Dijkstra算法(c代码实现)
- Java 读取类路径下的资源文件实现代码
- java代码实现输出指定以.java结尾的文件的绝对路径
- 常用代码备份--获取路径下多有文件之文件名
- java代码实现输出指定以.java结尾的文件的绝对路径
- Dijstra算法的代码实现及解释(最短路径问题)
- 『算法设计_伪代码』贪心算法_最短路径Dijkstra算法
- C#替换html代码中所有img标签的路径保留文件名称