Выберите плитки на основе смежных плиток

Я работаю над текстовым редактором карт, и мне нужно автоматически выбирать плитки на основе смежных фрагментов. Например, при размещении дорожной плитки, рядом с другой дорожной плиткой, они должны быть ориентированы так, чтобы они образовывали сплошную дорогу. Если вокруг них есть другие дороги, нам может понадобиться использовать угловые или пересекающиеся плитки.

Может кто-нибудь порекомендовать некоторые алгоритмы для этого? Игра использует 8-направленную квадратную черепичную карту.

9 голосов | спросил alekop 24 Mayam12 2012, 02:07:16

2 ответа


17

Возможно, так оно и делается. У вас есть список разных плиток, которые представляют собой дорожные плитки во всех возможных ориентациях. Слева направо, все четыре угла, сверху вниз, что угодно. Теперь вы будете индексировать все эти плитки с байтом каждый. 8 бит, по одному для каждого направления. Это может быть в hashmap или по имени файла ... однако вы хотите сделать это.

Итак, у вас есть это:

введите описание изображения здесь>> </p>

<p> Байт-код для вышеуказанного фрагмента <strong> 00000000 </strong>. Затем ваша плитка, которая идет слева направо (или справа налево), выглядит следующим образом: </p>

<p> <img src =

Байт-код для этой плитки 10001000 или 136. В качестве другого примера рассмотрим трехстороннее пересечение:

введите описание изображения здесь>> </p>

<p> Байт-код для этой плитки <strong> 10101000 </strong>. </p>

<p> Вероятно, вы увидите, куда я иду. Вы устанавливаете позиции бит в байте, представляющем соединения. Это намного лучше, чем пытаться сделать какую-то большую цепочку if /else, которую я видел раньше. Когда вы хотите разместить плитку, осмотрите плитки вокруг нее и создайте байт на этом пути. Установите 1 для плиток, у которых есть дороги (или все, что вы хотите подключить), и 0 для плиток, которые этого не делают. Когда вы закончите, у вас будет байт-код для точной плитки, в которой вы нуждаетесь. </p>

<p> Обратите внимание, что при создании активов вы можете многократно использовать их, просто поворачивая и присваивая ему правильный байтовый код. </p>

<p> <strong> ИЗМЕНИТЬ </STRONG>:
Обновленные изображения будут менее дерьмовыми. Да, они лучше, чем раньше. </p></body></html>

ответил MichaelHouse 24 Mayam12 2012, 02:32:12
3

Я бы порекомендовал вам взглянуть на эту удобную страницу для получения дополнительной информации, поскольку она подробно рассказывает о почти всех аспектах ваших действий, а также о нескольких возможных оптимизациях: http://www.angryfishstudios.com/2011/04/adventures-in- bitmasking /

tldr - это то, что вы запрашиваете каждую соседнюю ячейку и сохраняете комбинацию в битовом поле /байте, а затем передаете ее через карту, которая преобразует число от 0 до 255 в значение от 0 до 47, что соответствует уникальному изображению .

ответил Kyle Baran 23 Mayam14 2014, 07:29:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132