Netlogo:我怎么问多个补丁中的一只乌龟?

时间:2019-10-13 07:52:10

标签: netlogo

我如何问多个补丁中的一只乌龟? 我想在指定补丁中选择一只乌龟。 (或者我想问一只乌龟在指定的细胞范围内) 例如,我想使用以下语法:但这不起作用。

ask turtles-on patch (1, 0) or (2, 0) or (3, 0)
move-to patch max-pxcor 1

ask turtles with [(50 0) < max-pxcor]
move-to patch max-pxcor 1

1 个答案:

答案 0 :(得分:3)

您的第一个问题是识别补丁的方式。例如,“ patch(0,1)”的正确格式为patch 0 1-没有括号并且没有逗号。您在代码的move-to位中正确使用了此语法。

要使第一个版本正常工作,您需要创建补丁程序的补丁程序集,然后从中进行选择:

ask turtles-on (patch-set patch 1 0 patch 2 0 patch 3 0)
[ move-to patch max-pxcor 1
]

我不太确定您打算在第二个版本中使用什么逻辑,因为您正在将一个数字与另一个数字进行比较。即使您的语法正确,对所有海龟来说都是对的,对所有海龟来说都是不对的。根据您的第一个示例,我怀疑您希望乌龟查看它们自己的补丁,并且,如果pxcor <50,而pycor为0,则您希望它们移动。那应该是:

ask turtles with [pxcor < 50 and pycor = 0]
    [ move-to patch max-pxcor 1
    ]

如果您想让乌龟在行中包含所有补丁(而不仅仅是50个以内的补丁),那么您可以:

ask turtles with [pycor = 0]
    [ move-to patch max-pxcor 1
    ]

请注意,第二个和第三个示例使用了乌龟可以自动访问其所在补丁所拥有的变量的事实。

请注意,如果您只想要一只乌龟(就像您在文本中说的那样,而不是在示例代码中说的那样),则需要ask one-of turtles而不是ask turtles