或者我如何为补丁集添加坐标? 我想创建一个列表并添加每个访问的补丁作为列表的另一个元素(使用lput),但是每次都替换补丁 - 这里我尝试使用补丁集,但我不知道如何添加最后的新补丁并在那里添加坐标。
到目前为止,这是我的代码:
globals [ frontier frontier2 ]
breed [squares square]
breed [circles circle]
to setup
ca
set-default-shape squares "square"
set-default-shape circles "circle"
create-breeds
reset-ticks
end
to create-breeds
create-squares 1 [
setxy 0 0 ]
create-circles 1 [
setxy 5 5 ]
end
to go
ask squares [
fd 1
set frontier []
set frontier lput patch-here frontier
show frontier
]
ask circles [
fd 1
set frontier2 patch-set patch-here
show frontier2
]
tick
end
这就是指挥中心所展示的内容:
“(方0):[(补丁7 -3)]
(圈1):( agentset,1 patch)“
我期待类似(方块0)的东西:[(补丁0 0)(补丁1 0)(补丁2 0)]
答案 0 :(得分:3)
它每次都会替换补丁,因为您每次都在go
程序中明确重新初始化列表:
set frontier []
只需将该行移至setup
程序中即可!
至于将补丁添加到补丁集而不是列表中,正确的语法应该是:
set frontier2 (patch-set frontier2 patch-here)
但我不建议您使用它,因为它需要每次都重建补丁集,因此比使用列表和lput
要慢。此外,总是以随机顺序访问补丁集,我怀疑这不是你想要的。