我正在嘗試創建一個遊戲,其中JADE代理是'敵人',他們在迷宮附近追逐玩家。代理在JADE行爲不起作用
到目前爲止,我有: MazeView.java(使用Swing來在屏幕上繪製各種事情,並讓用戶通過按下按鈕交互) Enemy.java(玉劑,將有行爲,如搜索,追求,等等) 和其他一些類,如生成實際的迷宮數據結構等
我的問題是,雖然我可以實例化一個代理並在屏幕上繪製它,出於某種原因,我不能添加任何行爲。例如,如果我想這樣的事情(在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。
任何想法,將不勝感激。謝謝!
自己調用doWake()似乎並不奏效,但您可能正確地說我需要手動執行Boot類應該正常執行的任何操作。我會看看文檔。 – Touchdown
謝謝,你的語法工作!所以我需要爲我的代理創建一個新的容器及其屬性,然後將其設置爲主容器。 – Touchdown