В общем такого характера проблемка. Все условно, не важно что это будет - юнит, 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 в результате обмена опять попало число с номером этой ячейки, делаем еще один случайный обмен (тут можно не делать дополнительную проверку на коллизию т.к. коллизия не может на этом этапе возникнуть повторно для этой ячейки)
Если я ничего не напутал - получаем на выходе массив чисел в котором числа не повторяются и не находятся в ячейках совпадающих со своим номером.
Использовать это потом - номер ячейки это один игрок, число в ячейке - другой.
Если нужен учет того что игроки могут иметь номера не идущие подряд (ливеры, компьютеры, просто игроки не использующиеся в этой системе) - нам понадобится дополнительный массив с номерами игроков, чтобы превратить номер ячейки и число в ячейке в реальный номер игрока.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
17
4 года назад
0
Присвой всем число и через логическую переменную с условием, запрети герою с номером атаковать копию или того кого уже атакуют(если это нужно) Можно не число, а любое значение для сканирования героя например - цвет. Описание конечно размыто и условно, но надеюсь мысль была понятна.
0
11
4 года назад
0
world_editor:
Присвой всем число и через логическую переменную с условием, запрети герою с номером атаковать копию или того кого уже атакуют(если это нужно) Можно не число, а любое значение для сканирования героя например - цвет. Описание конечно размыто и условно, но надеюсь мысль была понятна.
Еще раз напишу - только сначала в теории все так просто, как только начнешь это реализовывать, то столкнешься с кучей подводных камней
2
37
4 года назад
Отредактирован ScorpioT1000
2
У меня получилось (с любым числом игроков и областей) - с помощью плейер и юнит групп и фоллбека (для решения бага по незанятым парам)
(карта reforged, отдельно триггеры прикрепил)
prevAttackingUnit не нужен
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.