|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
насколько я понял имеется в виду след ситуация:
карта может выглядеть как 1 1 1 1 1 1 1 1 1 x 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 P 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 Необходимо подсветить проходимые пути - в данном случае влево и вправо-вниз, и подсветить именно по три клетки в данном направлении, при этом клетки сверху и сверху справа учитываться не должны, я правильно понял?
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Волновой алгоритм (для сетки называется ещё алгоритмом Ли) вас спасёт.
Вообще это упрощённый а*, вообще не пойму как осилив а* не догадаться про волновой.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
[+1 22.06.11]
Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
|
Я не осиливал А*, я просто взял готовый алгоритм для AS3. Я пользуюсь только массивом клеток (путь), который он возвращает.
Цитата:
|
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
Честно говоря сложно посоветовать в данном случае что то, не зная конечной задачи, т.к. все упирается в ресурсоемкость.
Не совсем понятно для чего Вы использовали А* если персонаж обладает свободой воли и будет искать путь с помощью игрока или какого то другого фактора? В этом случае использование А* неоправданно, т.к. с каждым перемещением перса Вам придется заново искать оптимальный путь из той точки, куда он попал. А* нужен для независимых перемещений объектов (выбрал зерга, нажал атаковать туда, и он побежал, просчитав дорогу.). Помимо этого существуют кучи оптимизаций, например, составить сетку 10х10 изо всей карты, проверить сквозную проходимость клеток (учитывая мосты, горы и реки), когда зерг достигает следующей клетки, брать эту клетку, делить её 100х100, находить путь уже там учитывая нахождение протоссов и т.п. В вашем случае, если это что пошаговое, придется скорее всего реализовывать алгоритм Флойда (вычислять стоимость путей из каждой клетки сетки в каждую), он отработает один раз. После этого как только персонаж попал на клетку, подсвечивать окружающие клетки, стоимость перемещения по которым не превышает длины его хода, при этом учитывая возможность перемещения перса из текущей клетки в запланированную. Мб, есть путь легче и проще, но, в моем понимании задачи, задача сложная
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг |
|
|||||
[+1 22.06.11]
Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
|
У меня пошаговая игра. Стратегия. С одной стороны танки и с другой. (свои, враги). Просто выбираем юнита и говорим идти или атаковать и всё. Мне нужно понять как подсветить все доступные для хода клетки, исходя из того на сколько клеток может ходить юнит.
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Да тупо там думаю - стал на точку, из точки пустил волну. Волна дальше длины хода не идёт.
Волновой алгоритм же тупой как пробка - идём из исходной клетки во все соседи. Из соседей потом тоже (но в пройденные не идём). Повторить нужное число шагов.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 26.11.2010 в 16:34. |
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
Тогда Флойд
либо прогонять волновой несколько раз для каждого юнита или самое простое решение: при создании карты (создании руками, в процессе разработки) делать массив [клетка_сетки = [возможные_пути_с_этой_клетки] ], а потом тупо подсвечивать клетки из этого массива длиной хода танка. Такой подход займет больше времени при разработке и не универсален (для каждой карты придется делать свой массив), зато будет гораздо быстрее работать и без адских алгоритмов.
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг Последний раз редактировалось leofit; 26.11.2010 в 16:35. |
|
|||||
[+1 22.06.11]
Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
|
А что обязательно волновой, с AStar не получится ? :-(
|
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
А* курочить надо, а если Вы его не реализовывали сами то вы ой как напоретесь с ним
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг |
|
|||||
[+1 22.06.11]
Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
|
Спасибо, понятно в общем. Положение не из лучших.
|
Часовой пояс GMT +4, время: 20:43. |
|
« Предыдущая тема | Следующая тема » |
Теги |
клетки , поиск пути |
|
|