Массив коллекций List[] - можно так сделать? - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! У меня вопрос следующего характера: у меня есть три стадии жизни юнитов - рождение, логика (передвижение, столкновения и тд) и смерть. С логикой и смертью все понятно, для них у меня есть следующие коллекции:
        public List<UnitWalk> Units = new List<UnitWalk>();// список юнитов для просчета логики
        public List<UnitWalk> UnitsDeadPool = new List<UnitWalk>(); // список юнитов на умерщвление
У каждого юнита есть свои параметры, они уже выстроены, считаются. Если логика говорит, что юнит должен умереть, этот юнит переходит в "мертвый бассейн". Но вопрос возник со списком рождаемых юнитов. Армий может быть несколько, из разных зданий; в армии есть первый юнит (генерал, ведущий за собой конкретную армию) и остальные. Есть распределение по дороге. Все эти параметры просчитываются при создании списка. Когда армия создана, распределена, полностью появилась и сделала первые шаги, она начинает передаваться в список юнитов Units для дальнейшего управления логикой. Так вот, если всех рождаемых юнитов из разных домов поместить в один список, не знаю, как их контролировать и отделять друг от друга, как выявлять генерала и распределять по дороге (проблема не в отслеживании дома-родителя или каких других параметров, а именно с указанными вещами). Мне нужен массив коллекций, что-то по типу
public List[]<UnitWalk> UnitsBornPool = new List[]<UnitWalk>();
Но я такого определения не нашел, язык ругается. Есть что-то похожее? Каждый элемент этого массива будет содержать коллекцию, описывающую конкретную армию конкретного дома. Коллекция, в свою очередь, содержит юнитов, распределяет их, а дальше передает в следующую общую для всех армий коллекцию Units. Помогите, пожалуйста

Решение задачи: «Массив коллекций List[] - можно так сделать?»

textual
Листинг программы
        public void AddUnit(int _army, House argAttacking, House argTarget)
        {
            UnitLines _unitLine; // их расположение на дороге
            double _timeBorn=0; // для партий юнитов
            int _bornScore=0; // счетчик. Сначала двое бегут, потом партия из троих, потом опять двое и тд.
            for (int i = 0; i < _army; i++) 
            { 
                UnitWalk locUnit = new UnitWalk(Content);
                int _lineChoosing = i % 5;
               
                switch (_lineChoosing)
                {
                    case 0:
                        _unitLine = UnitLines.Mid;
                        _bornScore++;
                        break;
                    case 1:
                        _unitLine = UnitLines.LeftMid;
                        break;
                    case 2:
                        _unitLine = UnitLines.RigthMid;
                        _bornScore++;
                        break;
                    case 3:
                        _unitLine = UnitLines.Left;
                        break;
                    case 4:
                        _unitLine = UnitLines.Right;
                        break;
                    default:
                        _unitLine = UnitLines.Mid;
                        break;
                }
                _timeBorn = Settings.UnitBornTime * _bornScore;
                locUnit.Load(_timeBorn, _unitLine, argAttacking.HouseDescript, argTarget.HouseDescript);
                Units.Add(locUnit);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы