lawson писал(а):Надеюсь, что полностью весь алгоритм...
Чуть ранее, мы с вами выяснили, что ваших компетенций не хватает даже на то, что бы прочитать пост на который вы "отвечаете". Что несколько обесценивает (для меня) ваши огульные оценки моих "алгоритмов".
Уж простите.
lawson писал(а):при переходе вызываем метод ... который в Вашем булевом поле... помечает занятые и свободные клетки
Клетка может быть "занята" одновременно несколькими персонажами. Благодаря чему, для её "освобождения" пришлось бы каждый раз пробегать по всем персонажам с проверкой их расстояния от неё. При каждом шаге каждого персонажа проверять каждую освобождающуюся клетку на её занятость каждым из остальных персонажей.
Браво! Вы только что придумали, как на пустом месте увеличить время выполнения задачи в несколько тысяч раз.
К слову, то, на что я обратил сейчас ваше внимание - САМООЧЕВИДНО.
По крайней мере для меня. А для вас нет. И тем не менее, вы "пытаетесь" мне "подсказать" что-то. Вы - мне.
А потом ещё и обижаетесь, когда я пытаюсь избежать подобного "содействия".
Как будто у меня "есть выбор". ))
lawson писал(а):Раз поле у нас одно, оно может быть статическим, чтобы не создавать его каждый раз при поиске клетки, как у вас.
И, ЕЩЁ РАЗ, в качестве иллюстрации, сказанного выше.
Поле одно. Про ваш метод, я написал выше. Это не метод оптимизации, а метод тысячекратного увеличения потребления процессорного времени, на пустом месте. А для моего метода (второго), массив необходимо перед каждым использованием "обнулять" (делать значение всех элементов - false).
Вы таки удивитесь, но между "держать статический массив, и каждый раз перед использованием пробегаться по нему циклом, "стряхивая" предыдущие значения" и "каждый раз инициировать новый локальный массив" - разница в ДЕСЯТКИ раз. И отнюдь не в пользу статического массива.
lawson писал(а):Одним циклом(правда бесконечным) с помощью рандома находим пустующую клетку.
И снова, ЕЩЁ РАЗ, в качестве иллюстрации, сказанного выше.
Цикл с рандомом использовался в моём первом методе, где полученная таким образом клетка, далее проверялась на доступность, путём проверки расстояния до неё, всех существующих персонажей. Формирование "матрицы доступных клеток" использовалась во втором моём методе.
Предложение, сначала сформировать "матрицу доступных клеток", а потом прыгать по ней зачем-то рандомом, настолько ЛИШЕНО СМЫСЛА (зачем рандомом, когда можно просто перебирать элементы один за другим, пока не найдём первый подходящий?!), что я начинаю подозревать, что вы так до сих пор и не прочли изначальный пост, на который продолжаете пытаться "ответить".