Взаимодействие между сущностями - PullRequest
0 голосов
/ 21 августа 2011

Предположим, у меня есть какое-то окружение (назовем его world) и некоторые сущности (назовем их bot s), которые принадлежат миру.Я хочу, чтобы боты взаимодействовали друг с другом (например, получить список ботов, находящихся в поле зрения бота).Но если боты не знают о своей среде, они также не знают о других.Итак, вопрос в том, как это взаимодействие реализуется в приложениях реального мира?

Решение, которое я вижу, состоит в том, чтобы дать ботам указатель на мир, но я нахожу это довольно нелогичным, потому что у каждого бота будет то же самое «Права »при взаимодействии с другими ботами, как в мире.

Решением, которое я использую в данный момент, является концепция сигналов и слотов QT.У каждого бота есть сигнал queryNeighbours(Bot *requester, QVector<Bot *> *result), а в мире есть слот giveNeighbours(Bot *requester, QVector<Bot *> *result).Итак, тогда я связываю сигналы ботов с мировым слотом, и когда боту нужно получить соседей, он просто получает их как:

QVector<Bot *> bots;
emit queryBots(this, &bots);

Однако я думаю, что есть некоторый шаблон, реализующий то, что янужно, чтобы мне не понадобился QT.

1 Ответ

1 голос
/ 21 августа 2011

Может быть, вы могли бы использовать класс, единственная цель которого - обрабатывать отношения между ботами и сделать этот класс доступным как для мира, так и для ботов:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...