Как создать комнаты и связи между ними из списка заданных комнат (заданных размеров комнат) на 2D-таблице? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь реализовать генератор подземелий в своем небольшом Java-проекте (текст roguelike - переход от начала к выходу со случайными событиями на карте), но есть одна проблема - я только начинаю с Java, и я не• много знаю о «правильном» кодировании, поэтому у него возникли проблемы с генерацией карты;карта - это двумерный массив (например, плитки размером 50x50), в котором вы перемещаете своего персонажа между комнатами, соединенными несколькими коридорами.

Я рассматривал несколько вариантов, как это сделать:

  • makeсписок наборов комнат, которые затем будут отображаться в определенных местах массива (разделив массив 50x50 на плитки 5x5, а затем из первой плитки 4x4 выберите одну точку, будет левый верхний угол комнаты - самая маленькая комната, которую я хочусделать 2x2)
  • , чтобы сгенерировать карту, перемещая каждый столбец при создании нескольких играбельных плиток, а следующий столбец добавит еще одну играбельную плитку рядом с существующими + после нескольких итераций, создающих коридоры, но это звучит более сложно
  • создание коридоров, проверяя, находятся ли 2 плитки (которые являются комнатами) на одном уровне (вертикальном или горизонтальном), а затем переключая плитки со "настенных" на "играбельные" (это текстовая игра, поэтому "#"to". ")

Звучит ли это жизнеспособно или я должен искать какое-то другое решение? Или это слишком сложно / почти невозможно, и есть способ сделать это проще?

# # # # # # #
# # . . . # #
# # . # . E #
# # . . . # #
# # . # . # #
# H . . . # #
# # # # # # #

«H» - герой, «E» - выход, «#» - стены и «.»играбельные плитки (где вы можете перемещаться с помощью ввода - вверх / вниз / влево / вправо)

1 Ответ

0 голосов
/ 08 ноября 2019

Я довольно новичок в Java и Android тоже, и я должен сказать, что это звучит довольно сложно, но не невозможно. Если вы еще этого не сделали, я настоятельно рекомендую пройти онлайн-курс. На сайте www.udemy.com я взял один для Android Nougat и только что подписался на другой, предназначенный для Q.

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

Я бы сказал, что зная«правильное» кодирование было бы важно, чтобы завершить это все же. Не зная, как много вы знаете / не знаете, я думаю, это было бы слишком много для этой должности.

Удачи, хотя.

...