Я пытаюсь создать игру, в которой JADE Agents являются «врагами», и они преследуют игрока вокруг лабиринта.Агент в JADE не работает
До сих пор у меня есть: MazeView.java (использует качание рисовать различные вещи на экране, и позволяет пользователю взаимодействовать через нажатие кнопок) Enemy.java (агент JADE, который будет иметь поведение, как поиск, преследовать, и т. д.) И еще несколько классов, которые делают такие вещи, как создание фактической структуры данных лабиринта и т. д.
Моя проблема заключается в том, что, хотя я могу создать экземпляр агента и нарисовать его на экране, по какой-то причине я не могу добавить любое поведение. Например, если я хотел что-то вроде этого (в Enemy.java):
protected void setup() {
// Add a TickerBehaviour that does things every 5 seconds
addBehaviour(new TickerBehaviour(this, 5000) {
protected void onTick() {
// This doesn't seem to be happening?
System.out.println("5 second tick... Start new patrol/do something?");
myAgent.addBehaviour(new DoThings());
}
}); // end of addBehaviour
System.out.println("End of setup()...");
} // end of setup
Когда я запускаю код, никаких ошибок не выбрасываются, и я могу видеть «Конец настройки() ...» отображается консоль. Поэтому по какой-то причине он просто не входит в метод addBehaviour(). Даже если поведение DoThings() не сработало (прямо сейчас оно просто печатает сообщение), оно должно по крайней мере отображать сообщение «5 секунд» перед выбросом ошибки. Что здесь происходит?
Я думаю, что это может быть связано с тем, что в моем лабиринте нет понятия «время». Пользователь нажимает клавишу, и происходит обработка THEN. Таким образом, наличие агента, который делает вещи каждые 5 секунд, может не работать, когда нет реального способа облегчить это в лабиринте? Но я все еще смущен, почему он просто пропускает addBehaviour(), и я не получаю сообщение об ошибке.
Возможным решением может быть повторная реализация моего лабиринта как постоянного цикла, который ждет ввода. Позволит ли это понятие «время»? В принципе, я не уверен, как связать их вместе. Я полный новичок с JADE.
Любые идеи будут оценены. Благодаря!
вызов doWake() сам по себе не работает, но вы, вероятно, правы, говоря, что мне нужно вручную делать то, что обычно должен делать класс загрузки. Я посмотрю документы. – Touchdown
Спасибо, ваш синтаксис работал! Поэтому мне нужно было создать новый контейнер для моих агентов вместе со своими свойствами, а затем установить его как основной контейнер. – Touchdown