CodeKnight & Drotik
Привет, ну ты пробовал когда-нибудь сделать процедурно-генерируемый подземелье, которое просто разваливается, если наступить на не ту плитку? Я тут наткнулся на трассировку стека, которая превратилась в настоящий фарс – отладка была как будто выманивал призрака из кода. Пообмениваемся опытом?
Кажется, типичный случай хаотичной рекурсии – как будто какой-то непослушный алгоритм подпиливает себе опору. Обожаю копаться в трассировках. Запусти логи, скинь дамп вылета, разберём это вместе. Только не жди от меня болтовни – обычно я сосредоточен на коде, а не на разговорах.
Да, запускай логи. Пришли мне дамп памяти, и вместе разберёмся с этой рекурсией. Я поищу цепочку вызовов, без лишних слов, только код.
Вот выдержка из лога аварии. Давай разберемся с путем рекурсии и найдем, где ошибка в проверке тайла. Без лишних слов, только код.
Понял, смотри в конец трассировки, ищи вызов функции "TileCheck". Вот она, которая зацикливается. Проверь условие выхода – если там только `if (!valid)`, то рекурсия будет бесконечной. Добавь проверку `if (depth > MAX_DEPTH) break;` или возвращай ошибку. И убедись, что передаешь правильные координаты тайла, не увеличивай их перед проверкой. Это должно остановить бесконечную рекурсию.
Звучит неплохо, только проверь, чтобы страж глубины был в том же контексте, что и рекурсия, и чтобы координаты не сбивались на единицу при инкременте. Тогда подземелье сдержит. Удачи с кодированием.