Показать сообщение отдельно
  #3  
Старый 14.08.2010, 05:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А я бы подругому решал эту проблему.
У тебя есть некоторое исполнительное устройство (Вася). Вася может выполнять следующий набор команд:
- POP(S): взять ящик со склада (должен быть на этом складе и Вяся и ящик и у Васи не должно быть ящика);
- PUT(S): положить ящик; (Вася должен быть на нужном складе, у него д.б. ящик и на складе должно быть место)
-MOVE(S): перемещаться между складами.

Теперь о командах пользователя.
Команда пользователя представляет собой микропрограмму.
Путь надо отнести ящик со склада 1 на склад 2.
Тогда микропрограмма выглядит так:
MOVE(1)
POP(1)
MOVE(2)
PUT(2)
Если после выполнения команды пользователя Вася должен вернуться на изначальный склад, то надо добавить
MOVE(1)
Каждый шаг отрабатывается отдельно (у тебя в коде).
Т.е. для каждой команды надо написать процедуру, которая будет делать анимацию. Делать сама и не возвращать управление, пока не выполнит.
Тогда у тебя будет некоторый унифицированный механизм исполнения потока таких команд.
Теперь про отрисовку. У тебя должен быть объект, который себя отрисовывает в нужных координатах по тем условиям (есть у Васи ящик или нет), которые заданны в нем (объекте).

Все. Осталост только заблокировать ввод пользователя до конца исполнения программы
Ответить с цитированием