我想为ID最小的乌龟添加一个名为“min-id”的标志。我想把其他海龟标记为“not-min-id”。但是,以下示例语法有错误。错误消息如下。
“龟0跑步时出错> 由程序GO调用 按钮'go'“
调用我可能需要你的建议。谢谢。
globals [ min-id not-min-id count-up ID ]
to go
reset-ticks
ask patch 0 0
[
sprout 1 ;;This model needs to use sprout.
]
ask (turtles-on patch 0 0)
[
set ID who
setxy min-pxcor 0
set heading 90
]
if (count turtles > 0)
[
ask min-one-of turtles [who]
[
set min-id TRUE
]
]
if (count turtles > 0)
[
ask (turtles-on patch 0 0)
[
if ID > min-one-of turtles [who] ;;This syntax has errors.
[
set not-min-id TRUE
]
]
]
ask (turtles-on patch 0 0) with [not-min-id]
[
set count-up count-up + 1
]
if (count turtles > 0) [
ask (turtles-on patch 0 0) with [min-id]
[
die
]
tick
end
答案 0 :(得分:2)
您的代码中存在一些混淆。根据你的描述,我相信你希望每只乌龟都有一个标志,表明它是否具有最小号码。这意味着你需要每只乌龟的旗帜。但是,您已将min-id设置为全局变量而不是turtle变量。此外,您只需要一次flag变量(也就是说,您需要min-id但不需要not-min-id)并将其设置为TRUE或FALSE。
替换
globals [ min-id not-min-id count-up ID ]
与
globals [ count-up ID ]
turtles-own [ min-id ]
并查看是否修复了它。同时将min-id初始化为FALSE,作为sprout
。
说了这么多,我非常同意Alan,如果你在调试中使用who
变量除了print语句之外的任何东西,你可能需要重新考虑你的代码。在您的情况下,具有最低who
数字的乌龟有什么特别之处,让您想要跟踪它?你只是想要一个恰好位于特定位置的随机龟吗?然后在该位置选择一只随机龟,在不经过who
的情况下执行TRUE / FALSE。