在Netlogo中查找块

在Netlogo中查找块,netlogo,Netlogo,我有一个关于Netlogo的问题。 有没有什么聪明的方法可以找到补丁块(在我的例子中,我需要找到三块黄色补丁块=>更准确地说,我需要找到三块黄色补丁相邻的行或列)。 是否有任何Netlogo功能我可以使用,或者是否有必要使用循环并像处理二维阵列一样工作?n使用询问补丁可以循环所有补丁。此外,可以通过使用with将条件应用于ask语句。因此,您正在循环所有满足该条件的修补程序。在这里,我只是把补丁的x和y坐标放在一个列表中,然后您可以进一步处理它 let yellow_patches [] ask

我有一个关于Netlogo的问题。 有没有什么聪明的方法可以找到补丁块(在我的例子中,我需要找到三块黄色补丁块=>更准确地说,我需要找到三块黄色补丁相邻的行或列)。
是否有任何Netlogo功能我可以使用,或者是否有必要使用循环并像处理二维阵列一样工作?n

使用
询问补丁
可以循环所有补丁。此外,可以通过使用
with
将条件应用于
ask
语句。因此,您正在循环所有满足该条件的修补程序。在这里,我只是把补丁的x和y坐标放在一个列表中,然后您可以进一步处理它

let yellow_patches []
ask patches with [pcolor = yellow] [
    set yellow_patches lput [pxcor pycor] yellow_patches
]
是正确的,如果需要,可以提取黄色面片的所有坐标,并处理这些坐标以确定哪些面片相邻

但是,如果您只需要知道三行或三列的位置,还可以让所有黄色面片检查相邻面片的颜色,并告诉您是否形成了行或列。有关示例,请参见下面的代码

to setup
  ca
  reset-ticks
  ask n-of 150 patches [
    set pcolor yellow 
  ]

end

to find-threes

  ;; for rows
  ask patches with [ pcolor = yellow ] [
    if ( [pcolor] of patch-at 1 0 = yellow ) and ( [pcolor] of patch-at -1 0 = yellow ) [
      ;; do whatever you need
      set pcolor pcolor - 3
      show ("I am the center of a row of three")
    ]
  ]

  ;; for columns
  ask patches with [ pcolor = yellow ] [
    if ( [pcolor] of patch-at 0 1 = yellow ) and ( [pcolor] of patch-at 0 -1 = yellow ) [
      ;; do whatever you need
      set pcolor pcolor - 3
      show ("I am the center of a column of three")
    ]
  ]

end

您好,我很抱歉反应太晚,您的回答非常好,非常有帮助。谢谢谢谢你,这对我帮助很大。我很抱歉反应太晚。谢谢。请接受答案和/或放弃投票:)