Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.11.2010, 16:32
leofit вне форума Посмотреть профиль Отправить личное сообщение для leofit Найти все сообщения от leofit
  № 11  
Ответить с цитированием
leofit
 
Аватар для leofit

Регистрация: Dec 2009
Сообщений: 428
насколько я понял имеется в виду след ситуация:

карта может выглядеть как
Код AS1/AS2:
    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
где P позиция перса, x - конечная точка, 0 - клетки на которые нельзя ходить, 1 - на которые можно. Допустим данный перс может ходить на три клетки

Необходимо подсветить проходимые пути - в данном случае влево и вправо-вниз, и подсветить именно по три клетки в данном направлении, при этом клетки сверху и сверху справа учитываться не должны, я правильно понял?
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг

Старый 25.11.2010, 16:38
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 12  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Волновой алгоритм (для сетки называется ещё алгоритмом Ли) вас спасёт.
Вообще это упрощённый а*, вообще не пойму как осилив а* не догадаться про волновой.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 26.11.2010, 15:15
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 13  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Я не осиливал А*, я просто взял готовый алгоритм для AS3. Я пользуюсь только массивом клеток (путь), который он возвращает.

Цитата:
Необходимо подсветить проходимые пути - в данном случае влево и вправо-вниз, и подсветить именно по три клетки в данном направлении, при этом клетки сверху и сверху справа учитываться не должны, я правильно понял?
Да так. Не объясните ?

Старый 26.11.2010, 15:47
leofit вне форума Посмотреть профиль Отправить личное сообщение для leofit Найти все сообщения от leofit
  № 14  
Ответить с цитированием
leofit
 
Аватар для leofit

Регистрация: Dec 2009
Сообщений: 428
Честно говоря сложно посоветовать в данном случае что то, не зная конечной задачи, т.к. все упирается в ресурсоемкость.
Не совсем понятно для чего Вы использовали А* если персонаж обладает свободой воли и будет искать путь с помощью игрока или какого то другого фактора? В этом случае использование А* неоправданно, т.к. с каждым перемещением перса Вам придется заново искать оптимальный путь из той точки, куда он попал.

А* нужен для независимых перемещений объектов (выбрал зерга, нажал атаковать туда, и он побежал, просчитав дорогу.). Помимо этого существуют кучи оптимизаций, например, составить сетку 10х10 изо всей карты, проверить сквозную проходимость клеток (учитывая мосты, горы и реки), когда зерг достигает следующей клетки, брать эту клетку, делить её 100х100, находить путь уже там учитывая нахождение протоссов и т.п.

В вашем случае, если это что пошаговое, придется скорее всего реализовывать алгоритм Флойда (вычислять стоимость путей из каждой клетки сетки в каждую), он отработает один раз. После этого как только персонаж попал на клетку, подсвечивать окружающие клетки, стоимость перемещения по которым не превышает длины его хода, при этом учитывая возможность перемещения перса из текущей клетки в запланированную.
Мб, есть путь легче и проще, но, в моем понимании задачи, задача сложная
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг

Старый 26.11.2010, 16:00
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 15  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
У меня пошаговая игра. Стратегия. С одной стороны танки и с другой. (свои, враги). Просто выбираем юнита и говорим идти или атаковать и всё. Мне нужно понять как подсветить все доступные для хода клетки, исходя из того на сколько клеток может ходить юнит.

Старый 26.11.2010, 16:27
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 16  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Да тупо там думаю - стал на точку, из точки пустил волну. Волна дальше длины хода не идёт.
Волновой алгоритм же тупой как пробка - идём из исходной клетки во все соседи. Из соседей потом тоже (но в пройденные не идём). Повторить нужное число шагов.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 26.11.2010 в 16:34.
Старый 26.11.2010, 16:30
leofit вне форума Посмотреть профиль Отправить личное сообщение для leofit Найти все сообщения от leofit
  № 17  
Ответить с цитированием
leofit
 
Аватар для leofit

Регистрация: Dec 2009
Сообщений: 428
Тогда Флойд
либо прогонять волновой несколько раз для каждого юнита
или самое простое решение:
при создании карты (создании руками, в процессе разработки) делать массив [клетка_сетки = [возможные_пути_с_этой_клетки] ], а потом тупо подсвечивать клетки из этого массива длиной хода танка. Можно также предусмотреть, что при гибели танка на какой то клетке эта клетка становится непроходимой и из массива динамически убирается. (не подумал что пересчет проходимости делать придется)
Такой подход займет больше времени при разработке и не универсален (для каждой карты придется делать свой массив), зато будет гораздо быстрее работать и без адских алгоритмов.
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг


Последний раз редактировалось leofit; 26.11.2010 в 16:35.
Старый 26.11.2010, 16:37
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 18  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
А что обязательно волновой, с AStar не получится ? :-(

Старый 26.11.2010, 16:40
leofit вне форума Посмотреть профиль Отправить личное сообщение для leofit Найти все сообщения от leofit
  № 19  
Ответить с цитированием
leofit
 
Аватар для leofit

Регистрация: Dec 2009
Сообщений: 428
А* курочить надо, а если Вы его не реализовывали сами то вы ой как напоретесь с ним
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг

Старый 27.11.2010, 02:23
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 20  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Спасибо, понятно в общем. Положение не из лучших.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
клетки , поиск пути
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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