【发布时间】:2015-05-05 14:01:34
【问题描述】:
我希望有一个包含许多不同补丁的字段,这些补丁具有一些属性(例如随机(但固定)数量的食物)以及名称或 ID。 也就是说,左上角的补丁应该具有名称“1”(或任何可行的名称),但不允许与其他人共享此名称!
感谢您的帮助,我找不到任何东西。
【问题讨论】:
我希望有一个包含许多不同补丁的字段,这些补丁具有一些属性(例如随机(但固定)数量的食物)以及名称或 ID。 也就是说,左上角的补丁应该具有名称“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。
【讨论】:
关于为每个补丁分配一个“唯一身份”,我的建议是……不要这样做。补丁程序已经通过它们的pxcor 和pycor 的组合唯一标识。所以如果你想访问左上角的补丁,可以参考patch -16 16。
您还应该知道,对补丁(以及海龟和链接)的引用可以直接存储在变量中。因此,每当您考虑存储“补丁 ID”时,都应该存储对补丁的引用。例如,如果您想将左上角的补丁存储在全局变量中:
globals [ top-left-patch ]
to setup
set top-left-patch patch min-pxcor max-pxcor
end
(min-pxcor 和 min-pycor 将报告 -16 和 16,或任何适合您世界维度的内容。)
然后,稍后,您可以直接引用存储的补丁:
ask top-left-patch [ set pcolor red ]
但如果你真的想创建一个 id,Bryan 的答案就是要走的路。
【讨论】: