|
•любишь усложнять - Burn, 16.02.2011 12:08:14 |
|
|
Мне не нравится, что маршрут будет отменяться, если целевая клетка занята. Я рад, что во вселенной нашлось мнение, отличное от правильного. :)
Возможно клетка занята лишь временно, тогда можно клетку освободить и опять выполнить команду движения (Готово). А ещё возможно клетку освободить и опять отправить самолёт по тому же маршруту. Сложность алгоритма действий аналогичная.
Было бы логичнее либо просто игнорировать выполнение команды, Ну, это совсем легко. Я так понял, что этот вариант для тебя не приоритетен? А зря, его как раз можно просто реализовать, в отличие от: либо выполнить её насколько возможно, то есть по маршруту откатиться назад и найти клетку, в которую лететь можно. Соответственно только до неё и долететь. Однако проложенный маршрут пусть по прежнему указывает на прежнюю занятую клетку. Неплохо, но Artlav и так не может убрать злой баг авиабашен, а с таким усложнением алгоритма, боюсь, ситуация только усугубится.
Кстати, приведённый выше алгоритм никак не разруливает параллельное (одновременное) движение нескольких самолётов. По прежнему можно будет дать двум самолётам задачу двигаться в одну и ту же клетку и передать ход или быстро обоим дать команду Готово. Да. Совсем никак. А все вычисления у нас идут прям так параллельно-параллельно, совсем как в многозадачной системе Windows. Ну, то есть, не будет такого, что один самолёт вдруг окажется первым в очереди обработки событий и полетит к своей заветной целевой клетке, а второй остановится, т.к. в момент обработки события для него целевая клетка уже будет занята? Наверное, надо просто очень быстро жать на кнопку Готово :) |
|
| |