Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите с созданием прототипа плиточного мира (http://www.flasher.ru/forum/showthread.php?t=136488)

denver 01.04.2010 08:26

Я изначально не закладывал диагональные перемещения. Хотя волновой это позволяет делать.
Вот что пишут в вики про волновой алгоритм.
Я пользую по 4м направлениям.

Котяра 01.04.2010 09:55

Ладно, это всё частности.. просто волновой алгоритм, поиск в ширину, поиск в глубину, поиск Дейкстры - это всё частные случаи A*.
Цитата:

Почему A* допустим и оптимален

Алгоритм A* и допустим, и обходит при этом минимальное количество вершин, благодаря тому, что он работает с «оптимистичной» оценкой пути через вершину. Оптимистичной в том смысле, что, если он пойдёт через эту вершину, у алгоритма «есть шанс», что реальная стоимость результата будет равна этой оценке, но никак не меньше. Но, поскольку A* является информированным алгоритмом, такое равенство может быть вполне возможным.

Когда A* завершает поиск, он, согласно определению, нашёл путь, истинная стоимость которого меньше, чем оценка стоимости любого пути через любой открытый узел. Но поскольку эти оценки являются оптимистичными, соответствующие узлы можно без сомнений отбросить. Иначе говоря, A* никогда не упустит возможности минимизировать длину пути, и потому является допустимым.

Предположим теперь, что некий алгоритм B вернул в качестве результата путь, длина которого больше оценки стоимости пути через некоторую вершину. На основании эвристической информации, для алгоритма B нельзя исключить возможность, что этот путь имел и меньшую реальную длину, чем результат. Соответственно, пока алгоритм B просмотрел меньше вершин, чем A*, он не будет допустимым. Итак, A* проходит наименьшее количество вершин графа среди допустимых алгоритмов, использующих такую же точную (или менее точную) эвристику.
а вообще выбирать вам.
вот здесь хорошее описание алгоритмов поиска пути

denver 01.04.2010 10:06

Это мой первый опыт в поиске пути, и пока меня устраивает волновой. Да суть даже не в алгоритме. Т.е. путь я получу (включая невозможный).
Тут вопрос как лучше (оптимальней) двигать объекты по полю, чтобы отлавливать возникающие коллизии в ходе движения каждого из объектов.
У меня объекты двигает Tweener получая очередную координату опорной точки.
Двигать объекты по-клеточно как то будет выглядеть дергано.
Как вариант можно по ходу движения проверять проходима ли следующая клетка или нет, если нет генерить новый путь начиная с текущей.

Котяра 01.04.2010 10:21

Цитата:

Сообщение от denver (Сообщение 897218)
У меня объекты двигает Tweener получая очередную координату опорной точки.
Двигать объекты по-клеточно как то будет выглядеть дергано.

не вижу связи.. дёргано не будет
двигайте от клетки a1 до клетки a2 твинером (в начале движения выбираете направление анимации) затем до следующей клетки также (причем время прохождения по диагонали = 1.4 времени по прямой, можно легко ввести коэффициенты поверхности если надо - скорость тогда тоже будет пропорциональна)
что-то вроде:
Код AS3:

public function turn (e:TweenEvent = null)
{
// берем следующую точку пути, если надо пересчитываем
var targetPoint:Point = getNextPoint();
//пришли  - вообще надо не так сравнивать, это для примера..
if (targetPoint==currentPont)
{
dispathEvent(new PathEvent(PathEvent.END));
return;
}
// двигаем твинером -
//...
//по окончанию - двигаем дальше
tweener.addEventListener(TweenEvent.END,turn);
}


denver 05.04.2010 09:45

Заделал перемещение без опорных точек, получилось действительно те как дергано как я предполагал.
Бывают конечно "нахлесты" в плане коллизий, запишу это в "погрешности", ничего страшного :)

Worfollomey 28.07.2010 00:28

Здравствуйте. Нашел пару хороших уроков по изометрии и алгоритму поиска пути
вот в этой книге:http://www.friendsofed.com/book.html?isbn=1430216085
На Демиарте эти уроки даже перевели. Но вот как соеденить эти 2 урока и внедрить
алгоритм в изометрию не получается. Возможно кто-то этим занимался и может
подсказать где что и как дописывать в классах?


Часовой пояс GMT +4, время: 19:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.