【发布时间】:2015-10-16 14:43:15
【问题描述】:
我正在尝试创建一个游戏,其中 JADE Agents 是“敌人”,他们在迷宫中追逐玩家。
到目前为止,我有: MazeView.java(使用 Swing 在屏幕上绘制各种东西,并让用户通过按钮按下进行交互) 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 秒滴答”消息。这里出了什么问题?
我认为这可能与我的迷宫中目前没有“时间”概念有关。用户按下一个键,然后进行处理。因此,如果在迷宫中没有真正的方法来促进它,那么每 5 秒做一次事情的代理可能不起作用?但是我仍然对为什么它只是跳过 addBehaviour() 并且我没有收到错误感到困惑。
一个可能的解决方案可能是将我的迷宫重新实现为等待输入的恒定循环。这会允许“时间”的概念吗?基本上我不确定如何将两者联系在一起。我是 JADE 的初学者。
任何想法将不胜感激。谢谢!
【问题讨论】:
标签: java swing agents-jade