- 236
- 4
- 22
Всем ещё раз здравствуйте. Я конечно понимаю, что наверное задрал тут вопросы кидать, но не хочется делать костыли, а потом гадать, откуда всплывают ошибки и прочие неприятности. Теперь к сути:
У меня есть 2 тайла. 1ый - контроллер хранилища, 2ой - "обшивка". Контроллер является провайдером и приёмником энергии, а его ёмкость зависит от кол-ва подключенных обшивок. Подключать их можно с любой стороны от контроллера, и, соответственно, можно к обшивке ещё обшивку ставить. То есть любые вплотную меж собой установленные обшивки к контроллеру добавляют ему ёмкость. Я решил поступать так: в тайле обшивки запоминаю координаты контроллера, чтобы если обшивка ломается - по этим координатам вызывается метод refreshStructure() в контроллере. Также при установке блока по такой же механике будет вызван этот метод. По названию метода всё понятно - он должен посчитать, сколько обшивок стоит вплотную к этому контроллеру. Вот тут и возникает вопрос - как их посчитать? Сначала я думал делать что-то вроде цикла for, но скорее всего тут его не достаточно, возможно нужен рекурсивный поиск... Голова идёт кругом - не могу придумать нормальный алгоритм. Также нужно, чтобы был лимит поиска N блоков. То есть если уже нашлось например 30 блоков - поиск обрывается (в целях оптимизации, ибо вдруг построят целый чанк таких оболочек...)
Играться с рекурсией я даже побоялся, ибо с шансом 99% я ухвачу стак овер флоу экзепшн по своей же тупости. Пожалуйта, подскажите, где можно найти алгоритм такого поиска
У меня есть 2 тайла. 1ый - контроллер хранилища, 2ой - "обшивка". Контроллер является провайдером и приёмником энергии, а его ёмкость зависит от кол-ва подключенных обшивок. Подключать их можно с любой стороны от контроллера, и, соответственно, можно к обшивке ещё обшивку ставить. То есть любые вплотную меж собой установленные обшивки к контроллеру добавляют ему ёмкость. Я решил поступать так: в тайле обшивки запоминаю координаты контроллера, чтобы если обшивка ломается - по этим координатам вызывается метод refreshStructure() в контроллере. Также при установке блока по такой же механике будет вызван этот метод. По названию метода всё понятно - он должен посчитать, сколько обшивок стоит вплотную к этому контроллеру. Вот тут и возникает вопрос - как их посчитать? Сначала я думал делать что-то вроде цикла for, но скорее всего тут его не достаточно, возможно нужен рекурсивный поиск... Голова идёт кругом - не могу придумать нормальный алгоритм. Также нужно, чтобы был лимит поиска N блоков. То есть если уже нашлось например 30 блоков - поиск обрывается (в целях оптимизации, ибо вдруг построят целый чанк таких оболочек...)
Играться с рекурсией я даже побоялся, ибо с шансом 99% я ухвачу стак овер флоу экзепшн по своей же тупости. Пожалуйта, подскажите, где можно найти алгоритм такого поиска