感谢您阅读本文,感谢任何建议:)
启用时,我有一个开关(一个应急按钮),所有的代理值都被更改,并且启动了倒计时(全局变量)。当倒计时达到1时,所有代理值都会重新设置并且恐慌结束。
问题是恐慌永远不会结束!通过监视器,我可以看到我的倒计时不是10,9,8等(如预期的那样),但是10,-9181,-198187等(随机数,总是负数)。
我必须遗漏一些非常简单的东西!我的程序(从go开始):
to start-panic
ask generals
[ if panic = true and countdown = 10
[ set fear fear + 1
set probability probability + 1
set canchat? true
set conversation 10
set countdown countdown - 1 ] ]
end
to continue-panic
ask generals
[ if panic = true
[ set countdown countdown - 1 ] ]
end
to stop-panic
ask generals
[ if panic = true and countdown = 1
[ set panic false
set fear fear - 1
set probability probability - 1
set canchat? false
set conversation 5
set countdown 10 ] ]
end
答案 0 :(得分:1)
我发现我将继续恐慌的程序称为:
ask turtles [ continue-panic ]
而正确的逻辑是
if panic [ continue-panic ]
这个倒计时现在工作正常,恐慌结束了(我和代理人)
答案 1 :(得分:0)
set countdown countdown - 1
内有ask generals
,所以每个将军都会减少倒计时。但你只希望它减少一次。
以start-panic
为例,我认为你的逻辑更像是:
to start-panic
if panic and countdown = 10 [
ask generals
[ set fear fear + 1
set probability probability + 1
set canchat? true
set conversation 10 ]
set countdown countdown - 1 ]
end