java - 使用NetLogo API获取海龟坐标

标签 java netlogo

我正在尝试使用 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/

相关文章:

java - 引发主逻辑循环中断

graphics - 如何优化代码以使设置更快

网络标志 : introducing a delay primitive?

netlogo - 如何使一个补丁中的两只海龟都可见?

netlogo - Netlogo的执行顺序是怎样的?

java - Hibernate:尝试列出表后表变空

Java eclipse : class cannot be resolved to a type inheritance

java - 403 禁止 : Jsoup can't handle session cookies properly?

netlogo - 代表其他海龟内存的海龟变量

java - 显示来自 ArrayList 的数据(EJB + Servlet + JSP(JSTL))