В общем такого характера проблемка. Все условно, не важно что это будет - юнит, integer, real, то есть от этого можно целиком абстрагироваться. Суть такая - есть 3 (4.5.6.7.8) условных боевых единиц и у каждой есть копия. Нужно чтобы копии пошли атаковать основных героев, но так, чтобы условная копия под номером 6 не пошла атаковать основного героя под номером 6 ни в коем случае. Для примера попытался изобразить на картинке.
У кого какие мысли?

respect_gg, можно вобще вот так
  1. записываем в массив номера от 0 до N, где N это число игроков минус один, в ячейки с соответствующими номерами
  2. проходим циклом от N до 0, пусть номер итерации будет i
  3. на каждой итерации получаем случайное число R от 0 до N, Если оно совпало с i, то берем R= i+1 или R=i-1, с учетом границ
  4. меняем местами ячейки R и i
  5. если в ячейку i в результате обмена опять попало число с номером этой ячейки, делаем еще один случайный обмен (тут можно не делать дополнительную проверку на коллизию т.к. коллизия не может на этом этапе возникнуть повторно для этой ячейки)
Если я ничего не напутал - получаем на выходе массив чисел в котором числа не повторяются и не находятся в ячейках совпадающих со своим номером.
Использовать это потом - номер ячейки это один игрок, число в ячейке - другой.
Если нужен учет того что игроки могут иметь номера не идущие подряд (ливеры, компьютеры, просто игроки не использующиеся в этой системе) - нам понадобится дополнительный массив с номерами игроков, чтобы превратить номер ячейки и число в ячейке в реальный номер игрока.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
18
На картинке у вас каждого героя может атаковать только один другой герой, это тоже учитывается?
11
Vlod:
На картинке у вас каждого героя может атаковать только один другой герой, это тоже учитывается?
В этом и смысл. Грубо говоря они должны драться 1х1, но так, чтобы условный Горный король не стал жертвой своей же копии (то бишь другого Горного короля)
27
Создаем 3 переменные отряд. ТЕСТ_А, ТЕСТ_B, ТЕСТ_С
Предварительно в группу ТЕСТ_А включаем всех основных героев, в группу ТЕСТ_B включаем все копии.
Далее, триггер:
Hero_mechanic - это просто переменная юнита из моей карты) Можно сделать любую другую.
Загруженные файлы
11
Lord_Teo:
Создаем 3 переменные отряд. ТЕСТ_А, ТЕСТ_B, ТЕСТ_С
Предварительно в группу ТЕСТ_А включаем всех основных героев, в группу ТЕСТ_B включаем все копии.
Далее, триггер:
Hero_mechanic - это просто переменная юнита из моей карты) Можно сделать любую другую.
Я то же думал сначала, что будет просто.
Только ты не учел одного но - Кель пошел атаковать Архимага, а Архимаг Келя. А Горный король стоит и не понимает че ему делать, ведь выставлено условие - свою же копию атаковать нельзя
15
Создаём 2 группы, одна для верхней линии героев, вторая для нижней. Заносим в группы каждой линии противоположный список героев, как цели потенциальной атаки. Проверяем условия для каждого юнита и работам с его группой. Выбрать случайного героя противоположной группы, если тип юнита = типу проверяемого юнита, повторяем действие. Нашли не похожего юнита, теперь это его цель атаки. Удалили найденную цель атаки из группы. Повторяем алгоритм для всех героев.
27
respect_gg:
Я то же думал сначала, что будет просто.
Только ты не учел одного но - Кель пошел атаковать Архимага, а Архимаг Келя. А Горный король стоит и не понимает че ему делать, ведь выставлено условие - свою же копию атаковать нельзя
Не понимаю тебя. Почему он будет стоять? Проверь сам. Триггер небольшой, чтобы его повторить. Он будет атаковать случайного юнита из группы. Это ты уже позже в комментариях написал про 1 на 1. В начальном вопросе такого не было.
24
DarkLigthing, Lord_Teo, вы оба не учитываете коллизию, которая может возникнуть, если последние двое оставшихся будут одного и того же типа, что нарушает условие согласно которому копии не должны атаковать оригинал.
27
prog:
DarkLigthing, Lord_Teo, вы оба не учитываете коллизию, которая может возникнуть, если последние двое оставшихся будут одного и того же типа, что нарушает условие согласно которому копии не должны атаковать оригинал.
Какая коллизия, вы че?! Там действие: атаковать случайного! Просто будут несколько героев атаковать одного.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.