2015-05-16 3 views
0

Я пытаюсь создать собственный формат карты для своей собственной маленькой 2D-RPG, поэтому мой вопрос скорее заключается в том, как управлять чтением и созданием настраиваемого формата карты правильно и гибко. Во-первых, я пишу свой код на Java. Идея заключалась в том, чтобы иметь класс под названием «TileMap». Этот класс определяет двумерный целочисленный массив, в котором хранятся все мои сущности (я использую сущность-систему для реализации своей игры). Я также хочу сохранить и проанализировать некоторую информацию о размере карты до фактического процесса чтения. Файл карты должен выглядеть примерно так:Java - Как читать пользовательский формат карты

#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. и плитка - это размер каждой плитки в пикселях. Объекты определяются между скобками. Образец идет: [entity_id; x_pos; y_pos; z_pos]. Я уже написал код для синтаксического анализа такого файла, но он не очень гибкий, потому что вам просто нужно поставить один крошечный пробел перед квадратными скобками, и карта не может загрузиться. Мне просто нужно несколько полезных советов, чтобы сделать это гибким способом. Кто-нибудь может мне помочь?

+0

Это может быть проще использовать некоторые существующие схемы кодирования, как [JSON] (http://www.json.org/ Ява/). Это будет выглядеть так: '{width: 4, height: 3, ..., tiles: [[1,0,0,0], [23,1,0,0], [5,0,1 , 0]]} '. – Thomas

ответ

0

Я думаю, что может иметь 3 различных способов решения, что:
Во-первых, вы можете использовать карту с Maps: Map<Serializable,Map<String,Object>> где Сериализуемый ваш ENTITY_ID и отображение являются атрибуты, которые вам нужны, как («ширина» , 4), ("высота", 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

Смежные вопросы