Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
13:13
4038
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

АвторПомогите придумать алгоритм.
Помогаю делать брату курсовой. Суть его такая:
1) Есть амбар - прямоугольник.
2) А в нём комнаты внутренние прямоугольники с проходами.
3) Во всем амбаре присутвуют всякие объекты неинтерактивные столы, верстаки, стены, трактор, и интерактивные: ящики, шкафы, сундуки в которых может быть ключ, найдя его чел просто выходит через ворота.
4) Всё это генериться рандомчиком(случайно).

Суть проблемы - тупики. Бывают ситуации, когда комнаты создаются не по желанию, а из внешних стен амбара и(или) других комнат, в которые нельзя попасть, в самосоздающихся комнатах нет работы создания прохода, т.к. они сами создались а не алгоритмом.
Скрины прилагаю (верхний правый угол самообразованная комната, которая считается за свободное пространоство амбара):
https://ibb.co/J5C4FT7
или вообще так
https://ibb.co/n8VQJhK
А если ещё там будет сундук с ключом или ворота, то вообще беда. Есть у кого идеи как этого избежать?
Т.е. можно конечно. Делать максимальное кол-во проходов в комнатах, но тогда решето не очень смотрится
https://ibb.co/pn6fys2
или смотреть чтоб стены комнат никогда не были совместны, но куча отдельных прямоугольников тоже не эстетично.
Какие ещё варианты, товарищи?
Со stackoverflow не перепутал?)
Я где больше всего обитаю туда и пишу, ну могу ещё в танчиках попробовать.
для AndruxaX:
if then else жеж
для AndruxaX:
это как написать крестики нолики, можно процедурно - но долго, можно ООП, так быстрее...
Щас курну ,порешаем
Мало данных, нужно ведь поочередно искать, я правильно понял?
Нужно придумать алгоритм размещения внутренних прямоугольников и проходов в них внутри большого прямоугольника так, чтоб не было тупиков.
Правильней не тупиков, а чтоб не было недоступных пространств.
для AndruxaX:
так сделать во всех комнатах по 4 двери...
курнул ,не могу ,не сегодня ... анекдоты в голове
для AndruxaX:
Закопировал текст!
Завтра своему коллеге программисту покажу на работе)
для __DestroyeR__:
так сделать во всех комнатах по 4 двери...
Да у меня был такой вариант, но тогда получается вот такое решето https://ibb.co/pn6fys2, а не комната, эстетически не очень, а так да, если лучше варианта не найдётся, я его использую.
По центру каждого генерируемого модуля - маркер.
И после каждого шага генерации внутреннего прямоугольника - процедура с проверкой, можно ли до этого маркера добраться.
Если процедура возвращает, что нельзя, откатываем последний прямоугольник и рэндомно генерим снова.
Как-то так.
для __DestroyeR__:
Закопировал текст!
Завтра своему коллеге программисту покажу на работе)

Спасибо, Destroer, уважуха тебе.
для AndruxaX:
ну, завтра подумаем, скину результат)

Сегодня я как Госта Фейс, голове одни анекдоты, весь день искали интернет, 3 этажа без сети, мрак.

Нашли у провайдера, пров. сказал что умер один туннель, перенастроили маршрутизаторы и ура.
И после каждого шага генерации внутреннего прямоугольника - процедура с проверкой, можно ли до этого маркера добраться.
Беда в том, что угловой прямоугольник не генерировался преднамеренно, а образовался от генерации других и маркера с проверкой там не будет.
Ну тогда сделай сетку с точками на весь амбар и процедурой проверяй, все ли точки доступны.
Шаг сетки можно опытным путем подобрать.
для Natty Dread:
Хотя уж такой попы это помогло бы избежать.
https://ibb.co/n8VQJhK
Но не такой
https://ibb.co/J5C4FT7
https://ibb.co/J5C4FT7
дааа, ужас для клаустрофоба)
1|2
К списку тем
2007-2025, онлайн игры HeroesWM