Форум HeroesWorld-а - Показать сообщение отдельно - [ОБСУЖДЕНИЕ] - Справочник, руководство на русском языке для Heroes 3.
Показать сообщение отдельно
#343
Старый 22.10.2008, 10:30
  #343
^
AlexSpl
 
Аватар для AlexSpl
📖
Регистрация: 07.06.2006
Сообщения: 615
Выставка наград
Регистрация: 07.06.2006
Сообщения: 615
Выставка наград
По умолчанию
Re: [ОБСУЖДЕНИЕ] - Справочник, руководство на русском языке для Heroes 3.

Алгоритм построения маршрута отряда от точки A до точки B

0.1. Делаем скриншот поля боя (сетка, снег) с минимальным количеством препятствий и отрядов (без боевых машин).

0.2. Распечатываем на принтере, берём в руки карандаш и стёрку, рисуем всевозможные препятствия, а также выбираем пункт A и пункт B.

Этап первый.
1. Гекс A получает метку 0.
2. Все соседние свободные гексы получают метку 1.
3. Продолжаем нумеровать гексы, пока гекс B не получит свою метку (метка - это расстояние гекса от гекса A).

Этап второй.
Пусть, например, гекс B получил метку 9.
4. Среди гексов соседних с гексом B (пункт назначения) выбираем те, которые имею метку 8.
5. Среди выбранных гексов нас будет интересовать гекс с наивысшим приоритетом:

--4--3--
-5----2-
--6--1--

Например, если верхний правый и нижний правый гекс имеют метку 8, то выбираем нижний гекс, так как он имеет высший приоритет 1 (а верхний правый только 3).

Найденный гекс будет предпоследним в маршруте A-B.

6. Теперь ищем гексы, соседние с найденным и имеющие метку 7 и т.д.

7. Повторяем описанную процедуру, пока не достигнем гекса с меткой 0.

Маршрут построен.

Для существ, занимающих два гекса, маршрут строится аналогично (при построении игнорируем тот факт, что отряд может разворачиваться). Гекс слева (для нападающего)/справа (для защищающегося) от "головы" существа получает метку "1". Только гексы, куда не может попасть "голова" отряда (из-за того, что не помещается "хвост"), помечаются, например, меткой "N".

Узнать, развернётся ли существо перед атакой, можно по разности dest - source, где dest - расстояние до пункта назначения в гексах от левого края поля битвы (правого, если Вы защищающийся), а source - соответствующее расстояние до исходного гекса. Если эта разность отрицательна, то отряд развернётся, иначе - нет.

P. S. Если гекс может получить несколько меток, то среди них выбираем наименьшую:
5 * 7 (Здесь гекс "*" получает метку "6", а не "8").
AlexSpl вне форума
Ответить с цитированием