![]() |
Как можно проверить ячейки вокруг новой ячейки?
Здравствуйте.
Имеется поле, где добавлено определённое количество ячеек A по высоте и ширине. На это поле я добавляю новые ячейки B. Они добавляются в самые разные стороны НО от предыдущей ячейки (то есть, они связаны с предыдущей ячейкой 100%). Как можно сделать так, чтобы происходила проверка на занятость ячеек вокруг новой ячейки, чтобы избавиться от эффекта нагромождения ячеек друг на друга? |
Вот и настало оно:D Это нужно алгоритм поиска путей, но какой, это Вы и я будем ждать ответа уже ГУРУ.
|
Вложений: 1
Вложение 30462
Красным обведены ячейки, которые нагромождены друг на друга. Синим обведены ячейки, которые НЕ нагромождены друг на друга. Вы меня правильно поняли? |
Я почти понял, что правильные ячейки имеют меньше трех соседей, но 45 и 44 меня запутали. Да и 70 и 69 тоже.
|
Да, я ошибся. 33, 42, 43, 63 до 67 и 72 это правильные.
|
Ну вроде как надо проверять углы вокруг ячейки, по три ячейки. Если хоть один уголок из трех ячеек полностью заполнен, то нельзя сюда ходить.
Ну, сам алгоритм можно слегка ускорить, проверяя сначала крест, поскольку каждая ячейка креста участвует в двух уголках, и если она пустая, то оба этих уголка можно дальше не рассматривать как опасные. Скажем, если верхняя ячейка пустая, то остается проверить только нижнюю. Но если полная, то надо смотреть левую и правую. Если они полные, то смотреть самые угловые. |
Глобальная проблема, так это в том, что ячейки могут добавиться так, что вокруг будет уже занято, как квадрат.
Думаю, что для решения этой проблемы, потребуется знание количества добавляемых ячеек, которые и создают "случайную дорогу", потом какое-нибудь ограничение, например, 10, если есть свободных 10 ячеек, то добавляем в случайную сторону продолжение дороги, а если с какой-то стороны не будет, то в определённую сторону. |
Так а цель то конечая какова? Почему так страшны нагромождения?
|
Я хочу сделать так, чтобы создавалась дорога, а нагромождения будут создавать, как бы, "обходные пути".
|
Цитата:
|
| Часовой пояс GMT +4, время: 16:41. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.