Map Editor 制作分析

来源:互联网 发布:阿里云os能刷安卓系统 编辑:程序博客网 时间:2024/04/29 20:50

根据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 绘图,它这个程序即是如此

参考代码如下:

这段代码的意思是实现窗口的WM_PAINT消息响应,绘制自己的内容到对话框

举个例子,windows GDI 画线函数可以用以下方法

  void Line(Vector2D from, Vector2D to)
  {
    MoveToEx(m_hdc, (int)from.x, (int)from.y, NULL);
    LineTo(m_hdc, (int)to.x, (int)to.y);
  }

MoveToEx 和 LineTo 都是标准的Windows GDI函数,需要注意的是,在使用这些函数之前,需要进行一系列的初始化操作,比如设置画笔颜色等等。。。

这个程序现阶段用GDI绘制足够了,只需要显示点,线,就可以了

 

最终的目的是完全实现一个洪水填充法的地图编辑器,生成地图文件的格式可以完全和它一样,回头再调整

原创粉丝点击