我对Netlogo还是陌生的。我试图让海龟根据变量的不同而采取不同的行动,但是我得到了运行时错误原本希望是true / false的值,但是却得到了0。
我已经在不同的过程中初始化了两只乌龟,因此不应有带有所需变量的乌龟空代理集。
to setup-figures
ask n-of 2 citizens
[ get-panicked ]
ask n-of 2 citizens
[ get-alerted ]
ask n-of 2 citizens
[ calm-down ]
end
to flee
ask citizens with [ panicked? ] [
fd 1.1
]
ask citizens with [ alerted? ] [
fd 0.6
]
ask citizens with [ calm? ] [
fd 0.5
]
if [pcolor] of patch-ahead 1 = grey
[collision-check]
end
to get-panicked
set panicked? true
set color red
set mood 19
end
to get-alerted
set alerted? true
set color yellow
set mood 35
end
to calm-down
set calm? true
set color green
set mood 66
end
答案 0 :(得分:1)
ask
原语将查看所有公民以查找那些(例如)被警告的人?等于真实。但是,如果您仅初始化一些公民,那些未初始化的公民会发出警报吗?设置为默认值零。零和假在NetLogo中并不相同,因此ask
会使那些具有警觉价值的公民感到窒息。为零,即在尚未初始化的代码上为零。在设置开始时,您可以放
ask citizens [
set panicked? false
set alerted? false
set calm? false
]
然后,您可以像在代码中一样,要求n个公民感到恐慌等。