在Netlogo中查找块

时间:2017-03-01 19:54:56

标签: netlogo

我对Netlogo有疑问。 有没有聪明的方法如何找到补丁块(在我的情况下,我需要找到黄色的三个补丁块=>更确切地说,我需要找到彼此相邻的三个黄色补丁的行或列)。 有没有我可以使用的Netlogo函数,或者是否需要使用循环并像二维数组那样工作?n

2 个答案:

答案 0 :(得分:1)

blckbird是正确的,如果你想要,你可以提取黄色斑块的所有坐标并处理这些坐标以找出哪些斑块相邻。

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

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

答案 1 :(得分:0)

使用ask patches,您可以遍历所有补丁。此外,可以使用ask将条件应用于with语句。因此,您正在遍历满足该条件的所有补丁。在这里,我只是将补丁的x和y坐标放在一个列表中,然后您可以进一步处理。

let yellow_patches []
ask patches with [pcolor = yellow] [
    set yellow_patches lput [pxcor pycor] yellow_patches
]