![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
__________________
http://www.chessmax.ru |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Паттерн Мост. Тип манипулятора как раз и есть мост, предоставляющий реализацию абстракции "взаимодействие с объектом". Тут не Стратегия с тупым use(), относящимся только к манипулятору. Тут мост к соответствующему разделу логики взаимодействия, устанавливаемый при смене дивайса.
Добавлено через 15 минут Абстрагируйте параметры взаимодействия, чтобы единообразно описывать любое. Например, расстояние, на котором осуществляется взаимодействие. Количество затрачиваемой энергии. Результат - разрушение, нагрев, изменение положения, массы и т.п. – что произойдет с объектом? Всю эту инструкцию можно хранить собственно в дивайсе в виде параметров. Если получится абстрагировать взаимодействие, то получится и возможность создавать новые плагинские девайсы и единообразно подключать их и использовать. Робот анализирует параметры, сравнивает их с ситуацией и задачей, и совершает необходимые действия – по вашему описанию, если расстояние до объекта не удовлетворяет параметрам, надо его сократить, и т.п.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 36
|
Wolsh
Т.е. создаем единый интерфейс-мост и его реализации выстрелить, подтянуть, закрыться и т.п. Создаем интерфейс девайса и там делегируем наш мост, а так же добавляем абстрактные свойства такие как расстояние до объекта и т.п., а реализация будет работать с этими свойствами. P.S. Даже если ответите утвердительно всё равно завалю еще тонной вопросов ![]() Последний раз редактировалось Den_root; 03.04.2012 в 12:46. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Смысл моего поста был в том, что надо подняться от руки к голове))) Абстрагировать один метод use() мало, так ведь? Дивайс влияет не только на то, как будет двигаться, выглядеть и действовать сам дивайс, но и на то, как будет вести себя робот.
1. Поведение робота в какие-то моменты учитывает, какой именно дивайс у него смонтирован. Как это абстрагировать? "Мозг" робота должен учитывать при расчете поведения какие-то параметры дивайса. Например, что это armor, или это weapon, или это tool. Это и есть "робот знает, что у него есть пушка". Надо определиться, какие базовые типы могут быть – защита, оружие, инструмент. У них естественно подтипы – оружие ближнего боя или на расстоянии, или массового поражения, и т.д. Инструмент для механики, для микроэлектроники, для жарки картошки? Мозг анализирует объект в поле "зрения" ина основании своей оснащенности определяет, может ли с этим объектом взаимодействовать. Таким образом дивайс ни о чем сам не думает за робота, а только предоставляет ему данные о себе, чтобы тот решил, стоит ли вообще вызывать use(), и надо ли перед этим что-то сделать (подойти поближе, сходить подзарядиться и т.п.)
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 36
|
Wolsh
Не ну то, что нужно еще и роботу мозги править это мы ужу выяснили несколькими постами выше, вопрос в том как это грамотно обставить? Inet_PC приложил if/switch, вы вот в своем предыдущем посте Brige, но я не совсем понял как его можно присобачить под это дело. Последний раз редактировалось Den_root; 03.04.2012 в 19:09. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Inet_PC предполагает действие от дивайса, по сути – как использовать дивайс, а Вам (я надеюсь) надо сначала определиться, надо ли его использовать. Чтобы не стрелять по пулям и не магнитить врага. А эта тема как бы выходит за рамки дивайса. Дивайс только предоставляет свой тип в обычном свойстве, далее интеллект робота должен оценить ситуацию и полезность данной руки в этой ситуации. Если надо защищаться от пуль и левая рука предоставляет защитный дивайс, робот использует левую руку, а не правую с паяльником. Мост здесь потому, что Стратегией ( use(...?...) ) не ограничишься. Тут нет даже выбора контекста, в котором юзать. Рука не может поменять дивайс в зависимости от контекста, понятие контекста, а значит и стратегии, здесь бессмысленно. Здесь "метаконтекст", то есть – Мост, то есть контекст диктуется внешними для интеллекта условиями – в данном случае типом дивайса, который и составляет мост с защитным блоком интеллекта. То есть, когда нужна защита, защитный блок интеллекта обращается через мост к защитной руке, и на основе её инструкции строит защитное поведение.
Всё еще абстрактно? Надо больше конкретики о проекте наверное, чтобы говорить конкретнее. Да и западать конкретно на паттерн нет особого смысла, я просто хотел подчеркнуть что это не Стратегия, как предлагали товарищи выше. Здесь не просто выбор метода, здесь формирование поведения в зависимости от того, что на другой стороне моста, от инструкций дивайса.
__________________
Reality.getBounds(this); |
|
|||||
|
if/switch при интерфейсе, как-то не очень хорошо.
Вот еще пара вариантов (правда может это одно и то-же). 1) use просто генерит какой-то объект (не обязательно визуальный), исходя из состояния робота (пулю, магнитную волну, щиток). Соответственно пулька улетает по своим делам. Магнитная волна тоже. Щиток "виснет" со стороны щита. А ребята с кем произошел соответствующий контакт сами думают. Поймал пульку - помер. Поймал волну - сдвинулся в сторону откуда она прилетела. Щиток взаимодействует только с пульками (там они сами "думают"). 2) Отдаем в use информацию об окружающем мире, а инструмент уже сам решает что делать, исходя из состояния своего и хозяина.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
как бы алгоритм..
1. Событие - в поле зрения появился объект 2. Анализ объекта. Например, объект – Враг 3. Врага надо уничтожать. Анализ системы. Проверяем, есть ли Оружие. 4. Правая рука предоставляет оружие, можно нападать. 5. Задействуем интеллект атаки, передаем ему мост к дивайсу в правой руке. 6. Анализируем параметры оружия. Энергии достаточно для атаки. Расстояние слишком большое. 7. Приближаемся к врагу на расстояние по инструкции оружия 8. Анализируем оружие. Прицеливание требуется 9. Выполняем прицеливание 10. Производим выстрел 11. Анализируем оружие. Перезарядка требуется 12. Перезаряжаем 13. Анализируем состояние цели / результат атаки и т. д.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 36
|
Wolsh
Итак, спустя пару дней, я кажется переварил несколько последних ваших постов. Ни робот решает, что нужно сделать, что бы использовать дивайс. Он лишь сообщает дивайсу, что хочет его использовать и дивайс на основании параметров робота (можно, наверно отправить дивайсу ссылку на всего робота) сообщает ему что тот (робот) должен делать (подъехать поближе, развернутся и т.д.). |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Обе руки сразу, или как-то поочереди? ))))))
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|