【问题标题】:NetLogo - how to give each patch an unique identity / plabel / nameNetLogo - 如何给每个补丁一个唯一的身份/标签/名称
【发布时间】:2015-05-05 14:01:34
【问题描述】:

我希望有一个包含许多不同补丁的字段,这些补丁具有一些属性(例如随机(但固定)数量的食物)以及名称或 ID。 也就是说,左上角的补丁应该具有名称“1”(或任何可行的名称),但不允许与其他人共享此名称!

感谢您的帮助,我找不到任何东西。

【问题讨论】:

    标签: patch netlogo


    【解决方案1】:

    补丁坐标已经作为一个唯一的ID。因此,patch 7 10 指的是带有pxcor 7 和pycor 10 的补丁。

    也就是说,如果你想要一个整数 id,你可以这样做:

    patches-own [ id ]
    
    ...
    
    (foreach (sort patches) (n-values count patches [?]) [
      ask ?1 [ set id ?2 ]
    ])
    

    sort patches 创建一个补丁列表,左上角的补丁是第一个,然后从左到右,从上到下。

    n-values count patches [?] 创建一个数字列表,从 0 到 count patches - 1

    【讨论】:

    • 非常感谢!这正是我一开始所需要的。
    【解决方案2】:

    关于为每个补丁分配一个“唯一身份”,我的建议是……不要这样做。补丁程序已经通过它们的pxcorpycor 的组合唯一标识。所以如果你想访问左上角的补丁,可以参考patch -16 16

    您还应该知道,对补丁(以及海龟和链接)的引用可以直接存储在变量中。因此,每当您考虑存储“补丁 ID”时,都应该存储对补丁的引用。例如,如果您想将左上角的补丁存储在全局变量中:

    globals [ top-left-patch ]
    
    to setup
      set top-left-patch patch min-pxcor max-pxcor 
    end
    

    min-pxcormin-pycor 将报告 -1616,或任何适合您世界维度的内容。)

    然后,稍后,您可以直接引用存储的补丁:

    ask top-left-patch [ set pcolor red ]
    

    但如果你真的想创建一个 id,Bryan 的答案就是要走的路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      相关资源
      最近更新 更多