2013-05-24 3 views
1

Наконец-то решил изучить Java-программирование 2d (на данный момент). Я работаю над игрой, у которой есть центральный объект, который пользователь будет направлять с помощью направленных клавиш. У меня есть работа, прекрасно работающая, собранная из примеров и руководств, которые я нашел.Прокрутите карту плитки java 2d, создавая дополнительные плитки

Я использую this method of generating colored background tiles, но я бы хотел прокрутить (переместить) фон в качестве основного объекта, который движется пользователь, до края окна. Я уверен, что смогу сделать эту работу, у меня есть основы на месте, но я не могу найти хороший учебник или фактическую демонстрацию способа продолжения генерации дополнительных фрагментов, чтобы заполнить пространство, в котором движется пользователь.

На данный момент это чисто фон, и мне не нужно сохранять точную плиту, созданную - но в конце концов я бы хотел эту способность. Я уверен, что мне нужно будет найти способ разделить области на «куски», как это делает minecraft.

Но на данный момент - как я могу постоянно заполнять область тем же рисунком? Или есть лучший способ создать плитки, которые лучше для этого?

+0

Каковы ваши требования к карте? Нужно ли быть статичным и неизменным, даже после прокрутки его частей с экрана? Бесконечно большой? Нет повторений? – Patashu

+0

В настоящее время нет беспокойства. Я бы хотел, чтобы он был очень большим, поэтому бесконечный - хороший план. Я бы хотел в конечном итоге изменить окраску фона дальше от «икры» пользователя, но я предполагаю, что это просто использование разных цветов для разных диапазонов координат. Мне не нужно помнить точное состояние плиток seens/уже прошло - я в порядке с регенерацией плиток для этой «зоны», когда игрок возвращается. В конце концов, я уверен, что я хочу их сохранить. – helion3

+0

Имо вам нужно что-то вроде Minecraft, Chunks. Кусок представляет собой x * x группу плит. Вы храните кусок, на котором пользователь включен, и 8 окружающих кусков (или больше) в памяти. Когда кусок выходит за пределы допустимого диапазона, вы выбрасываете его. Когда вам нужен новый кусок, вы его пишете. Затем каждый кадр, который вы рисуете, может печатать из текущих кусков, используя некоторую математику. Вы можете проверить каждый кадр, который движется персонаж, если вам нужно изменить куски. – Patashu

ответ

1

Вместо сплошного цвета вы можете использовать TexturePaint, как показано на рисунке here. Пусть ваша модель содержит ссылку на желаемую текстуру для каждой ячейки сетки. Пусть ваш вид использует flyweight pattern для рендеринга, как показано на рисунке here.

image

+0

Я рассмотрю это, спасибо. Однако, используя этот метод, как бы прокручивать фон? Это главный вопрос, который у меня был, и до сих пор не знаю, как с ним справиться. Мне нужно перемещать фон при перемещении пользователя, рисовать новые плитки в области, в которую они перемещаются, и, вероятно, удалять плитки в областях, перемещаемых за пределы экрана. – helion3

+0

В идеале вы просто меняете координаты сетки в модели и позволяете просматривать изображение. Другой подход показан [здесь] (http://stackoverflow.com/a/7203419/230513). – trashgod

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