Java - 如何读取自定义地图格式

时间:2015-05-16 11:26:59

标签: java parsing dictionary 2d entity-system

我正在尝试为自己的小型2D RPG创建自定义地图格式,所以我的问题是如何正确灵活地管理阅读和创建自定义地图格式。首先,我用Java编写代码。我们的想法是创建一个名为“TileMap”的类。这个类定义了一个二维整数 - 数组,其中存储了我的所有实体(我正在使用实体系统来实现我的游戏)。我还想在实际读取过程发生之前保存并解析有关地图大小的一些信息。地图文件看起来应该是这样的:

#This is a test map
width=4
height=3
layercount=1
tilesize=32
[1;0;0;0]
[23;1;0;0]
[5;0;1;0]

其中layercount是z-dimension提供的层数。和tilesize是每个tile的大小(以像素为单位)。实体在括号之间定义。模式为:[entity_id; x_pos; y_pos; z_pos]。我已经编写了代码来解析这样的文件,但它不是很灵活,因为你只需要在方括号前放一个小空格,地图就无法加载。我只需要一些有用的提示,以灵活的方式做到这一点。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我认为可能有3种不同的方式来解决这个问题:
首先,您可以使用带地图的地图:Map<Serializable,Map<String,Object>>,其中Serializable是您的entity_id,地图是您需要的属性,例如(&#34;宽度&#34;,4),(&#34;高度&#34;,3):

public static final String WIDTH = "WIDTH";
public static final String HEIGHT = "HEIGHT";

...

Map<String,Object> mapProperties = new HashMap<String,Object>();
mapProperties.put(WIDTH, 4);
mapProperties.put(HEIGHT, 3);

...

Map<Serializable,Map<String,Object>> map = new  HashMap<Serializable,Map<String,Object>>();
map.put(myEntity.getId(), mapProperties);

第二种方式可能是这样的:http://java.dzone.com/articles/hashmap-%E2%80%93-single-key-and
第三种方式可能是这样的:Java Tuple Without Creating Multiple Type Parameters