我正在尝试使用 Java API 获取 NetLogo 中海龟的坐标。我已成功加载工作区并一直使用我编写的以下代码:
public static int getX(HeadlessWorkspace workspace, String playerName, int agentNum)
{
Double doubleX = null;
int xVal = 0;
try
{
xVal = doubleX.valueOf((workspace.report("[xcor] of "+playerName+" "+agentNum).toString()).trim()).intValue();
}
catch(Exception ex)
{
ex.printStackTrace();
}
return xVal;
}
但是,有一个小问题。当乌龟数量超过 5 只时,速度极其缓慢。当我运行 200 只海龟的 Flocking 代码时,在没有获取坐标的情况下,我会在 10 秒内获得大约 300 个刻度。当我使用坐标运行代码时,每个刻度大约需要 3 秒。有没有更有效的方法来实现这一目标?
谢谢
纳迪姆
最佳答案
我设法找出正确的方法应该是什么。这是 Seth Tisue 给出的 NetLogo 邮件列表中的代码。
import org.nlogo.headless.*;
import org.nlogo.api.*;
class J {
public static void main(String[] args) {
try {
HeadlessWorkspace ws = HeadlessWorkspace.newInstance();
ws.openString(org.nlogo.util.Utils.url2String("/system/empty.nlogo"));
ws.command("cro 8 [ fd 5 ]");
org.nlogo.api.Turtle turtle =(org.nlogo.api.Turtle) ws.world().turtles().agent(3);
System.out.println("[xcor] of turtle 3 = " + turtle.xcor());
ws.dispose();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}
我在这里复制了代码,这样可能会让其他人受益。要查看可以从 Turtle 获取哪些信息的列表,请查看 NetLogo API 文档。
纳迪姆
关于java - 使用NetLogo API获取海龟坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3280686/