中国开源基础类库 NDKK 开发进展 2013-10-23
来源:互联网 发布:淘宝设置2件包邮 编辑:程序博客网 时间:2024/06/18 12:54
开源地址:https://github.com/ndkk/GreatFoundationLibrary
*经过测试验证的代码才是有价值的代码
当前进展:1)最短路径算法 (采用广度优先算法) -- 2013/10/11 初始化->进行中->已完成2) 排序算法(包括冒泡/选择/插入/快速) -- 2013/10/16 初始化->进行中
注:该代码中llt_开头的文件就是测试文件,该测试文件实际也是实现函数的调用方法。
1)寻路算法已经可以很好使用,经过了全面的UT测试,测试用例包括了两个部分:
(1)从文件读取地图的正确性:
用例项写在了llt_mapfile.cpp文件中
static const ST_MAPFILE s_StMapFile[] =
{
{true, "map_normal.txt", "-", "~", " \r\n"}, //normal
{false, "map_abn_flat.txt", "-", "~", " \r\n"}, //异常平地 x
{false, "map_abn_uneven.txt", "-", "~", " \r\n"}, //异常障碍 y
{false, "map_abn_delimeter.txt", "-", "~", " \r\n"}, //异常分隔副 /
{true, "map_normal_multi_flat.txt", "-=", "~", " \r\n"}, //多符号平地 =
{true, "map_normal_multi_uneven.txt", "-", "~!", " \r\n"}, //多符号障碍 !
{true, "map_normal_multi_delimeter.txt", "-", "~", " .\r\n"}, //多符号分隔符 .
{true, "map_normal_diff_row_len.txt", "-", "~", " \r\n"}, //每行长度不同
{true, "map_normal_empty_row.txt", "-", "~", " \r\n"}, //空行
{true, "map_abn_row_upper_boundary.txt", "-", "~", " \r\n"}, //行出边界
{true, "map_abn_col_upper_boundary.txt", "-", "~", " \r\n"}, //列出边界
{false, "map_normal.txt", "-~", "~", " \r\n"}, //normal 平地和障碍字符集重复
{false, "map_normal.txt", "-", "~-", " \r\n"}, //normal 平地和障碍字符集重复
{false, "map_normal.txt", "-", "~", " -\r\n"}, //normal 平地和障碍字符集重复
};
以上是我验证的所有情况,在地图中定义了平地为“-”,障碍物为“~”,分隔符为“ \r\n”,以上用例已全部通过。
(2)验证寻路算法
用例项写在llt_shortestpath.cpp文件中。
测试过的用例有:
static const ST_TESTCONDITION s_TestCond[] =
{
//连通地图
{true, "map_s_walk.txt", 0, 0, 2, 7},
{true, "map_s_walk.txt", 2, 7, 0, 0},
{true, "map_s_walk.txt", 3, 7, 0, 0},
{false, "map_s_walk.txt", 0, 0, 0, 0},
{false, "map_s_walk.txt", 0, 2, 0, 0},
{true, "map_s_walk.txt", 0, 3, 0, 0},
{false,"map_s_walk.txt", 0, 10, 0, 0},
{false,"map_s_walk.txt", 0, 0, 0, 100},
{false,"map_s_walk.txt", 100, 0, 0, 0},
{false, "map_s_walk.txt", 0, 0, 100, 0},
{false,"map_s_walk.txt", 0, 0, 6, 3},
{false,"map_s_walk.txt", 0, 0, 4, 3},
{true,"map_s_walk.txt", 0, 0, 4, 4},
//地图不连通
{false,"map_s_not_walk.txt", 0, 0, 3, 6},
{false,"map_s_not_walk.txt", 0, 0, 3, 5},
{true,"map_s_not_walk.txt", 0, 0, 3, 4},
};
主要对连通地图和不连通地图进行测试。
2) 最短路径算法调用方法:
CShortestPath *m_pShortestPath = new CShortestPath(); //初始化最短路径类
CMapfile Mapfile; //初始化地图文件调用类
Mapfile.SetFileName(".\\map_normal.txt"); //设置地图文件名
Mapfile.SetCanWalkToken("-"); //设置可走动地方标示
Mapfile.SetCannotWalkToken("~"); //设置障碍标示
Mapfile.SetDelimeterToken(" \r\n"); //设置文件分隔符
int x = 0;
int y = 0;
int **ppMap = Mapfile.GetMap(x, y); //获取地图的对象及对象的横纵轴范围 ppMap指向地图对象,x:横坐标 y:纵坐标
m_pShortestPath->SetMap(x, y, ppMap); //最短路径类设置对应的实体数组
ST_PT bPt(s_TestCond[i].bX, s_TestCond[i].bY);
ST_PT ePt(s_TestCond[i].eX, s_TestCond[i].eY);
m_pShortestPath->SetBeginPoint(bPt); //设置起点和终点
m_pShortestPath->SetEndPoint(ePt);
m_pShortestPath->DoService(); //进行最短路径计算
if (bRet)
{
m_pShortestPath->ShowResult(); //结果展现
}
delete m_pShortestPath;
另通报一下最新
排序算法(包括冒泡/选择/插入/快速)
的完成情况,本以为会比较顺利,简单测试都已经通过了。
但写了大量测试用例才发现,快速排序会死循环。
呵呵,看来不经过测试的代码确实是无用的。
今天太晚了,明天再继续定位。
- 中国开源基础类库 NDKK 开发进展 2013-10-23
- 中国开源基础类库 NDKK 开发进展 2013-10-14
- 中国开源基础类库 NDKK 正式命名
- Banana PI 开发板 开源硬件项目现在进展,比树莓派强大,比Cubieboard便宜
- openphone 开发进展中
- miniGui开发进展解决
- tiny210v2 开发进展
- 智能开关开发进展
- Qtopia-OpenWrt开源项目进展
- 开源项目工作进展(一)
- 题库系统开发进展 2015-1-10更新
- 中国两院院士评选出2013年中国和世界十大科技进展新闻
- 歼10B颠覆性进展令俄震惊:DSI进气道和中国风洞秘密
- 中国三大石油公司信息化进展
- 关于OpenCms开发的进展
- Hello China最新开发进展
- 进展
- 进展
- java 仿window记事本
- C数值算法(第二版).pdf免费下载
- 不能从const char *转换为LPCWSTR 经常碰到
- J2EE环境搭建(四)Ant的安装和使用
- C/C++常用算法手册.pdf免费下载
- 中国开源基础类库 NDKK 开发进展 2013-10-23
- myeclipse生成api时出错的解决办法
- 《根道果:禅修的方法与次第》读后感
- web API
- xhost + 不起作用怎么解决
- jQuery 常用方法总结
- iOS摇一摇实现
- "运动·河软"我来了
- C++ Primer第四版(中文版) pdf下载