Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сценарий поведения объекта.


4ECHOK ©   (2005-09-07 09:01:00) 

У меня такой вопрос будет к мастерам. Как бы Вы организовали следующий механизм.
Имеется объект-персонаж. Он умеет стоять, ходить, бегать, прыгать и т.д. Нужно задать сценарий его поведения, т.е. сначала он стоит, начиная с 1-й секунды он начинает идти и идет 3 секуды, затем начинает бежать в течении 2 секунд, потом прыгает и останавливается.
Встают вопросы:

1. Проверять начало/окончание процесса в каждый шаг симуляции - по-моему нерационально. Может есть другой выход ?
2. Как сопоставить команду на естественной языке и процедуру выполняющую данный процесс - писать парсер и скрипт-машину жуть как не хочется, а сопоставлять "команда-процедура" тоже нерационально. Что можно предложить ?

У меня есть свои мысли по этому поводу, но хотелось бы услышать и Ваше мнение. Спасибо за ответы.

P.S. Буду благодарен за ссылки на соответсвующую документацию или статьи.

---
То, что мы знаем, - ограниченно, а то, что не знаем, - бесконечно.


A22   (2005-09-08 17:53:00) [1]

сделать автомат, установить нужные состояние и переходы. если не хочется считать время - ну, вынеси в отдельный поток и "усыпляй" потом на нужное время после каждого перехода


Ищущий   (2005-09-08 16:07:00) [2]

2 4ECHOK:
Идея конечно бредовая, но: что если список процессов в твоей коллекции отключить от процедуры ProcessListUpdate, и привести к виду : 111111222222223333333311111112222222222
То есть на каждый шаг симуляции выполняется одно действие - флаг перебрасывается на другое и т.д.. Мини цикл.


4ECHOK   (2005-09-08 15:16:00) [3]

2Zer0: Интересная мысль. Надо будет поэкспериментировать.

2Frost (Freak): нет, и надеюсь, что смогу обойтись без него.

Пока иду в следующем направлении. В уобъекта есть свойство-коллекция, в котором прописан список процессов. Также есть процедура, типа ProcessListUpdate, которая вызывается на каждом шагк симуляции и запускает/останавливает процессы согласно их времени начала и окончания.
Вот, пока остановился на этом.
Второй вопрос [1] так и остается открытым.

---
То, что мы знаем, - ограниченно, а то, что не знаем, - бесконечно.


4ECHOK   (2005-09-07 23:29:00) [4]

Ой, ребята, завтра отвечу, что-то я сегодня недоперепил =))) Всем спокойной ночи.

---
То, что мы знаем, - ограниченно, а то, что не знаем, - бесконечно.


Frost (Freak)   (2005-09-07 13:48:00) [5]

2 4ECHOK:
Т.е., насколько я понимаю, скриптового движка у тебя нет?


Zer0   (2005-09-07 13:36:00) [6]

проще всего написать небольшой довесок к движку который записывает все команды, которые приходят к объекту и время (для каждой относительно предыдущей).

запускаешь игру. выбираешь нужного перса мышкой жмешь кнопку (Rec.) запись. указываешь мышой куда идти. после того как объект добрался до нужного места два раза кликаешь - объект бежит в заданном направлении. после этого жмешь какую-нибуть кнопку которая отвечает за прыжок. отжимаешь (Rec.)
все, команды записаны.

теперь можно воспроизводить путем тупого посылания команд (как-будто нажали кнопку мыши или клавиатуры) с учотом временных интервалов.


Тульский   (2005-09-07 13:11:00) [7]

Т.е. поставь себя на место объекта


Тульский   (2005-09-07 13:08:00) [8]

А как бы ты сам выполнил такой сценарий?


4ECHOK   (2005-09-07 10:50:00) [9]

Ну, хранение сценария - это отдельный разговор, в принципе легко решаемы с помощью XML сериализации (по крайней мере в моем проекте). Меня больше интересуют два вопроса [1]

---
То, что мы знаем, - ограниченно, а то, что не знаем, - бесконечно.


Тульский   (2005-09-07 10:07:00) [10]

Сценарий надо где-то хранить и как-то считывать. Так что, писать интерпретаор всё равно придется.


Наверх

Титульная страница Поиск, карта сайта Написать письмо