Colors Netlogo、邻居4和按代理颜色选择

Colors Netlogo、邻居4和按代理颜色选择,colors,netlogo,agentset,Colors,Netlogo,Agentset,我是NetLogo的新手,所以如果我的问题读起来像个新手…这就是为什么 我正在使用neigbors4命令来识别侵略者特工的四个邻居。然后,我想根据颜色和优先级(黑色、棕色和白色)从四个邻居中进行选择。如果邻居的颜色为黑色(优先级为1),则下一组指令将应用于该代理。如果没有一个邻居是黑色的,则优先级排序中的下一个颜色(棕色)将接收指令 使用某种类型的列表可以最好地实现这一点吗?以下答案强调了新手的简单性。因此,它只涉及提出的非常具体的问题 to-report choose-neighbor l

我是NetLogo的新手,所以如果我的问题读起来像个新手…这就是为什么

我正在使用neigbors4命令来识别侵略者特工的四个邻居。然后,我想根据颜色和优先级(黑色、棕色和白色)从四个邻居中进行选择。如果邻居的颜色为黑色(优先级为1),则下一组指令将应用于该代理。如果没有一个邻居是黑色的,则优先级排序中的下一个颜色(棕色)将接收指令


使用某种类型的列表可以最好地实现这一点吗?

以下答案强调了新手的简单性。因此,它只涉及提出的非常具体的问题

to-report choose-neighbor
  let _candidates neighbors4 with [pcolor = black]
  if any? _candidates [report one-of _candidates]
  set _candidates neighbors4 with [pcolor = brown]
  if any? _candidates [report one-of _candidates]
  set _candidates neighbors4 with [pcolor = white]
  if any? _candidates [report one-of _candidates]
  report nobody
end
您会注意到这段代码有很多重复。如果将这种重复捆绑到子例程中可能是一个好主意,例如

to-report choose-nbr [#color]
  let _candidates neighbors4 with [pcolor = #color]
  report ifelse-value (any? _candidates) [one-of _candidates] [nobody]
end

我能理解这里的逻辑。我现在要试试这个。非常感谢你!