|
4 / 4 / 3
Регистрация: 25.04.2015
Сообщений: 95
|
|||||||||||
Массив коллекций List[]<T> - можно так сделать?11.08.2016, 13:46. Показов 2692. Ответов 6
Метки нет (Все метки)
Добрый день!
У меня вопрос следующего характера: у меня есть три стадии жизни юнитов - рождение, логика (передвижение, столкновения и тд) и смерть. С логикой и смертью все понятно, для них у меня есть следующие коллекции:
Но вопрос возник со списком рождаемых юнитов. Армий может быть несколько, из разных зданий; в армии есть первый юнит (генерал, ведущий за собой конкретную армию) и остальные. Есть распределение по дороге. Все эти параметры просчитываются при создании списка. Когда армия создана, распределена, полностью появилась и сделала первые шаги, она начинает передаваться в список юнитов Units для дальнейшего управления логикой. Так вот, если всех рождаемых юнитов из разных домов поместить в один список, не знаю, как их контролировать и отделять друг от друга, как выявлять генерала и распределять по дороге (проблема не в отслеживании дома-родителя или каких других параметров, а именно с указанными вещами). Мне нужен массив коллекций, что-то по типу
Каждый элемент этого массива будет содержать коллекцию, описывающую конкретную армию конкретного дома. Коллекция, в свою очередь, содержит юнитов, распределяет их, а дальше передает в следующую общую для всех армий коллекцию Units. Помогите, пожалуйста
0
|
|||||||||||
| 11.08.2016, 13:46 | |
|
Ответы с готовыми решениями:
6
Коллекция коллекций List<List<T>>
|
|
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
|
|
| 11.08.2016, 14:25 | |
|
эм... что то типа такого
List<List<UnitWalk>>?
0
|
|
|
4 / 4 / 3
Регистрация: 25.04.2015
Сообщений: 95
|
|
| 11.08.2016, 14:39 [ТС] | |
|
А так можно?
0
|
|
|
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
|
|
| 11.08.2016, 15:33 | |
|
Diamond15, а почему нет?
з.ы. правда я не понял, почему конкретная армия описывается массивом
0
|
|
|
4 / 4 / 3
Регистрация: 25.04.2015
Сообщений: 95
|
|
| 11.08.2016, 15:46 [ТС] | |
|
Пробую твой вариант, вроде работает
![]() Смотри, посылаю армию из дома. Первый юнит должен быть генералом, идет по центру дороги, остальные идут, во-первых, с некоторым опозданием (распределение по времени или по пройденному пути от предыдущих юнитов), во-вторых, с распределением по ширине дороге, чтобы друг на друга не рисовались. Из дома они "списываются" просто числом, то есть отправка армии у меня не в классе дома, а в классе управления миров/стадией. Стадия узнает, какое количество надо отправить, а также откуда/куда. Если коллекция одна, то проверка условия "если первый юнит, то генерал" будет работать только с одной армией. Соответственно, из другого дома тут же отправляем армию, а там генерала уже нет, коллекция одна и она забита. Также и распределение по дороге, отправляются человечки с интервалом в 0.25сек. Если из другого дома отправить армию, таймер будет накладываться. Поэтому нужно сделать так, чтобы армии не зависели друг от друга, а это и есть массив коллекций. Вариант List<List<T>> вроде работает, по крайней мере, на стадии инициации компилятор не ругается. Сейчас поколдую и отпишусь, работает ли или нет Добавлено через 1 минуту А array_capacity если заранее не известен, добавлять можно будет в него потом по факту?
0
|
|
|
4 / 4 / 3
Регистрация: 25.04.2015
Сообщений: 95
|
||||||
| 12.08.2016, 21:44 [ТС] | ||||||
|
Вроде все сработало ( я про List<List<T>>), но в нем действительно не оказалось необходимости. Просто добавил параметр количества добавляемых юнитов и расчет и передачу всех параметров для рождения юнита прямо в методе:
Так что спасибо, на мысль навели
0
|
||||||
| 12.08.2016, 21:44 | |
|
Помогаю со студенческими работами здесь
7
Доступ к коллекциям в коллекции коллекций List<T>
Как сделать так, что бы после обновления первого List<> он не менялся во втором Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|