NetLogo:不能永远从另一个过程“停止”按钮吗?

时间:2019-01-04 22:17:08

标签: button netlogo execution forever

我在下面简化了我的问题。我想在没有机器人的情况下停止永久性按钮“ go”的执行,我想从另一个过程(在这种情况下为“ test”)中调用它,就像这样:

to go
 test
end

to test
  if not any? robots [ stop ]
end

之所以这样,是因为我想在机器人死亡的地方叫停,以便我可以发送适当的用户消息。

1 个答案:

答案 0 :(得分:3)

遗憾的是,您必须重新组织代码,以便您在执行过程中调用if not any? robots [ stop ],以使以下各项变为真实:

请参阅文档:

  

一个永久按钮也可以从代码中停止。如果永远按钮   直接调用一个过程,然后当该过程停止时,按钮   停止。 (在“乌龟”或“永久补丁”按钮中,该按钮不会停止   直到每只乌龟或斑块停止–一只乌龟或斑块不会   有权停止整个按钮。)

参考:http://ccl.northwestern.edu/netlogo/docs/programming.html#buttons

  

停止此代理程序立即从封闭过程中退出,询问,   或类似询问的结构(例如crt,孵化,发芽)。只有封闭   过程或构造停止,而不是代理的所有执行都停止。

参考:http://ccl.northwestern.edu/netlogo/docs/dict/stop.html

我不愿意发布的另一种hacky解决方案可能是执行以下操作,在该错误引发错误后停止。

to go
   carefully[test][error-message stop]
end
to test
   if not any? robots [ error "no more robots!" ]
end