2013-09-10 1 views
3

Я создаю игру типа RPG, и сейчас я нахожусь в мире поколений. Я ищу хороший способ создания лабиринтов для использования в генерации лесов. Я рассмотрел несколько алгоритмов, но никто не работает с плитками. Все они работают со стенами. Я не могу использовать стены, потому что, удалив одну стену, мне придется удалить весь блок, потому что игра состоит только из квадратов 16 * 16 пикселей. В настоящее время наиболее перспективным является dfs, но для этого все еще требуются стены.Создание лабиринта в игре на основе плитки

Редактировать: Чтобы прояснить проблему с большинством алгоритмов, это то, что они рассматривают каждое пятно пути как ячейку и стены между ячейками, чтобы не занимать места. В моей игре стены занимают точно такие же размеры, как и другие части лабиринта. Из-за этого я не могу найти алгоритм, подходящий для создания типа лабиринта, который я хочу создать.

+0

Почему вы не можете рассматривать плитки как стену? У вас не будет непроходимых плиток? Какой-то победит цель лабиринта, не так ли? – crush

+0

нет будет только два типа плитки в пути лабиринта и деревья без стен, так как путь будет только одной плитки шириной – Popgalop

+1

Так что же определяет стены лабиринта? Деревья? Разве деревья не являются стенами? – crush

ответ

7

Вы можете создавать стены отлично с плитами, используя четыре ячейки для каждого пространства. Например, 3x3 стенка на основе лабиринт:

+ + - + - + 
| |  | 
+ + + + 
|  | | 
+ - + - + + 
      | 
+ - + - + - + 

может быть преобразован в 7х7 плитки карте:

# . # # # # # 
# . # . . . # 
# . # . # . # 
# . . . # . # 
# # # # # . # 
. . . . . . # 
# # # # # # # 

Преобразование должно быть довольно очевидно: для каждого региона 2х2, один угол всегда является стена, противоположный угол всегда прозрачен, а остальные два представляют собой края. (Там также половина области на одном наборе краев для внешних стен.)

+0

но как бы я сгенерировал это в java – Popgalop

+1

Это будет полностью зависеть от того, как вы создаете лабиринт и как вы представляете его внутри. – duskwuff

+0

@Popgalop Вы можете начать с создания набора стен из плиток, удалив центральные плитки, которые никогда не сталкиваются, а затем примените алгоритм лабиринта, как правило, к плиткам стены – kiheru