0

ルールベースのシステムを利用してロボットを作成するために、JESS を使用しようとしています。ロボコードと JESS .jar の両方を Eclipse にインポートしました。ここに私のコードがあります -

public class myRobot extends Robot {
    Rete r = new Rete();

    public void run() {
        try {
            String reset = "(reset)"; 
            r.executeCommand(reset); 
            String enemyInfo = "(deftemplate enemyInfo (slot present) (slot energy) (slot name))";
            r.executeCommand(enemyInfo);

            while (true) {
                String command = "(assert (enemyInfo (present no) (energy -1) (name none)))";
                r.executeCommand(command);
            }

        } catch (JessException ex) {
            System.err.println(ex);
        }
    }

    public void onScannedRobot(ScannedRobotEvent e) {
        try {
            String command = "(assert (enemyInfo (present yes) (energy " + e.getEnergy() + ") (name " + e.getName() + ")))";
            r.executeCommand(command); 
        } catch (JessException ex) {
            System.err.println(ex);
        }
    }
}

ロボコードと JESS が一緒に正しく動作することを確認したかっただけなので、まだルールを追加していません。これを起動すると、robocode アプリケーションが開きます。しかし、このロボットをバトルに追加して起動しようとすると、アプリケーションが完全にフリーズします。

戦闘を開始しようとした直後にハングするため、ロボットのコンソールにアクセスして何が問題なのかを確認できません。私の System.out.println() デバッグ ステートメントはすべて、メインのコンソールではなくロボットのコンソールに出力されるため、何が問題なのかさえわかりません。これを機能させるための提案はありますか?

4

1 に答える 1