|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.06.2016, 18:14 | #11 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
да проще всего иметь что-то вроде TimedAction, которое отнимает тики от счетчика внутри себя.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
24.06.2016, 15:31 | #12 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Пепел Феникса, так и попробовал сделать, но что-то пошло не так.
Попробовал создать класс колекции а-ля SortedList, но с учетом того, что ключ может быть одинаковым (правильнее наверное было построить на паре "ключ-значение"). Вот он: Код:
Код:
Код:
P.S. Если кому интересно, то приложил проект. |
24.06.2016, 17:16 | #13 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а зачем коллекция? моб может выполнять несколько действий одновременно?
или вам для последовательности? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
24.06.2016, 19:30 | #14 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Для последовательности. Так сказать очередь.
Очередь сортируется по int-овой переменной, обозначающей задержку. Потом, когда таймер подсчитывает до нужного значения в этой int-овой переменной, то заставляет моба исполнить действие, удаляет его из очереди, и отнимает у оставшихся в очереди время, которое уже прошло. Хотя в одном месте я махнулся... Когда я добавляю событие, то надо к нему еще приплюсовывать текущее время задержки. Может имеет смысл добавлять и удалять действия так же в таймере. Допустим, сначала сохранять время и моба в какой-нибудь List<Tuple<int, Mob>, а потом из него в таймера закидывать в очередь? Последний раз редактировалось max_prorok; 24.06.2016 в 19:35. |
24.06.2016, 19:41 | #15 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
у вас просто последовательность, какая сортировка то?
вы же не выполняете всегда самое короткое действие? и да, Tuple вам не нужен. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
24.06.2016, 20:15 | #16 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Почему? Я их сортирую на этапе добавления в коллекцию
Последний раз редактировалось max_prorok; 24.06.2016 в 22:31. |
25.06.2016, 05:35 | #17 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
я и говорю, зачем сортировка?
у вас очередь действий или они все идут одновременно? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
27.06.2016, 09:55 | #18 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Очередь действий.
Это просто у меня пример рассмотрен такой, когда в одно и тоже время допустим должно произойти несколько событий. Например, так получилось что в одно и тоже время, один моб переходит на соседнюю клетку, у другого закончился задержка после удара, а третий закончил каст спела. |
27.06.2016, 12:17 | #19 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
так, вы очередь действий храните в мире выходит.
вам в любом случае очередь тут не сильно важна, просто список, что кончилось удаляете(или помечаете) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
27.06.2016, 12:26 | #20 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Я просто думал, это делать именно в виде сортировке в самом начале, чтобы в обработчике таймера код занимал как можно меньше времени. А то пока он найдет в коллекции нужную строчку, то пройдет больше времени, чем выберет просто первую. Не исключаю, что вы правы. Попробую тогда написать попроще, через Dictionary<Mob,int>.
Или же все-таки использовать List<>, дабы время не тратить на перевод в хэш-код? Хотя на данном этапе пожалуй лучше об этом не думать. Оптимизацию оставить на потом |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Снова я и снова геморрой, только уже с многопоточностью | FleXik | Общие вопросы Delphi | 26 | 07.07.2013 16:48 |
Неблокирующий сокет Си проблема с закрытием, проблема с закрытием сокетов в цикле | mnx_vol | C/C++ Сетевое программирование | 0 | 06.11.2012 13:57 |
нужно разобраться с многопоточностью с ThRead Object | Толян1 | C++ Builder | 1 | 16.07.2012 09:52 |
Проблема с многопоточностью | Kapitan4ik | Работа с сетью в Delphi | 3 | 29.02.2012 21:46 |