powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск пути
10 сообщений из 10, страница 1 из 1
Поиск пути
    #33992722
Sam Stone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем карту с лабиринтом произвольным и, соответственно, сетку AxB. Надо провести объект размером NxN (N>1) по лабиринту, учитывая, что ширина прохода может быть меньше N. Вопрос: как избежать захода в "узкие места"?
...
Рейтинг: 0 / 0
Поиск пути
    #33992792
Den_di
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все узкие места закрашиваем, что туда нет прохода(как стенка), а далее по правому краю до упора, или что вам надо.
...
Рейтинг: 0 / 0
Поиск пути
    #33992804
Sam Stone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Den_diвсе узкие места закрашиваем, что туда нет прохода(как стенка), а далее по правому краю до упора, или что вам надо.
Каким образом закрасить? Перебором по всей матрице проверять "свободность" группы клеток? Или есть способ "подешевле"?
...
Рейтинг: 0 / 0
Поиск пути
    #33992904
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sam StoneНадо провести объект размером NxN (N>1) по лабиринту

Что значит провести ? Вручную что-ли?
...
Рейтинг: 0 / 0
Поиск пути
    #33993042
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищи "волновой" алгоритм.
самый эффективный для лабиринтов, но не самый быстрый(другие более быстрые, но качество сразу летит).
...
Рейтинг: 0 / 0
Поиск пути
    #33993052
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь за качество, но нечто наглядное, может быть:
...
Рейтинг: 0 / 0
Поиск пути
    #33993661
Sam Stone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что значит провести? Вручную что-ли?
Провести с учетом "ширины". А ведет А*.

2 Aklin
он щупает соседние клетки и ничего не знает о "ширине" прохода, т.е. объект, идущий по лабиринту может быть по размерам больше одной клетки. Простейший пример: имеем сетку 5х5 см на полу, входную дверь шириной 100см или 20 клеток в квартиру и большой шкаф шириной, скажем, 30 клеток (проекция на пол). Ясен пень, что не пронести. Значит надо искать другой проход.
Пока докумекал до "нормализации" карты путем накладывания на каждую ячейку матрицы 2х2 (частный случай) для проверки пересечения со стенами. Таким образом вроде бы все проходы шириной в 1 клетку блокируются, остаются только более широкие. В принципе алгоритм одноразовый, можно, наверно, забить на производительность.
...
Рейтинг: 0 / 0
Поиск пути
    #33993807
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sam StoneКаким образом закрасить? Перебором по всей матрице проверять "свободность" группы клеток? Или есть способ "подешевле"?
Это дешевый способ относительно общего времени поиска пути в лабиринте.
...
Рейтинг: 0 / 0
Поиск пути
    #33994060
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
щупайте не 1 клетку, а правое и левое значение (вершнее и нижнее)...

или если все М клеток путы, двигайтесь.

или еще и разварачиваться нужно?
...
Рейтинг: 0 / 0
Поиск пути
    #33994280
Sam Stone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklinщупайте не 1 клетку, а правое и левое значение (вершнее и нижнее)...

или если все М клеток путы, двигайтесь.

или еще и разварачиваться нужно?

Нет, разворачиваться не надо. Модифицировать уже написанный поиск лень, поэтому просто нормализую карту как написал выше и подсовываю ее А* :)
Пожалуй на этом варианте остановлюсь.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск пути
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]