根据Map Editor生成的文件大致可以知道地图文件主要分3部分,第一部分是节点,第二部分是边,第三部分是物件
一个典型的文件如下:
3
Index: 0 PosX: 11 PosY: 11
Index: 1 PosX: 11 PosY: 25
Index: 2 PosX: 11 PosY: 74
2
m_iFrom: 0 m_iTo: 1 m_dCost: 14 m_iFlags: 0 ID: -1
m_iFrom: 1 m_iTo: 0 m_dCost: 14 m_iFlags: 0 ID: -1
497 485
0 10 48 88 48 0 1
4 3 11 74 7 50 2
分析这个文件,可得到,3表示3个节点,index是节点索引,后面跟坐标
2表示两条边,从节点0到节点1是双向移动,所以有两条边,m_iFrom是起点,m_iTo是终点,m_dCost是移动代价,m_iFlags和ID暂时未知
497 485 是地图大小
接下来的 0 代表墙体,后面紧跟它的起点和终点坐标,最后的0和1代表法线方向,X方向为0,Y方向为1,就代表朝正下方,这样你很容易就推测出其他朝向,如0.7 0.7,就代表朝右下方
4 代表医疗包
因此制作思路可以如下:建立几个list来保存以上的一些信息,最后的时候通过 std::ofstream 写入一个文本文件。
屏幕显示可使用 windows GDI 绘图,它这个程序即是如此
参考代码如下: