在Netlogo中查找块
我有一个关于Netlogo的问题。 有没有什么聪明的方法可以找到补丁块(在我的例子中,我需要找到三块黄色补丁块=>更准确地说,我需要找到三块黄色补丁相邻的行或列)。在Netlogo中查找块,netlogo,Netlogo,我有一个关于Netlogo的问题。 有没有什么聪明的方法可以找到补丁块(在我的例子中,我需要找到三块黄色补丁块=>更准确地说,我需要找到三块黄色补丁相邻的行或列)。 是否有任何Netlogo功能我可以使用,或者是否有必要使用循环并像处理二维阵列一样工作?n使用询问补丁可以循环所有补丁。此外,可以通过使用with将条件应用于ask语句。因此,您正在循环所有满足该条件的修补程序。在这里,我只是把补丁的x和y坐标放在一个列表中,然后您可以进一步处理它 let yellow_patches [] ask
是否有任何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
您好,我很抱歉反应太晚,您的回答非常好,非常有帮助。谢谢谢谢你,这对我帮助很大。我很抱歉反应太晚。谢谢。请接受答案和/或放弃投票:)