我正在努力理解并看看是否有可能更改以下内容:
我有一个有两个迭代的代码。与它的配置完全一样。通过点击安装-所有按钮,然后点击一次按钮4次。调用第二次迭代。但是,第二次迭代是从滴答1开始的,而不是从0开始的。为什么会发生这种事?有办法解决这个问题吗?
globals [ iteration ]
patches-own [ scale-patch ]
to setup-world
clearMethod
random-seed 1
ifelse iteration = 0
[setup-layers]
[setup-layers-2]
setup-turtles
reset-ticks
end
to clearMethod
clear-ticks
clear-turtles
end
to setup-all
clear-all
random-seed 1
ifelse iteration = 0
[setup-layers]
[setup-layers-2]
setup-turtles
reset-ticks
end
to setup-layers
ask patches [
set scale-patch random 10
set pcolor scale-color blue scale-patch -8 12 ]
end
to setup-layers-2
ask patches [
set scale-patch random 10
set pcolor scale-color green scale-patch -8 12 ]
end
to setup-turtles
crt 1 [ set color black ]
end
to go
moveproc
let n count turtles
if n = 0
[
ifelse iteration = 0
[
set iteration 1
setup-world
]
[
stop
]
]
tick
end
to moveproc
ask turtles [
right random 360
fd 1
if ticks >= 3
[
die
]
]
end提前感谢
发布于 2021-09-04 10:16:49
您更改迭代的时刻是在go过程(即set iteration 1 setup-world)中。但是,go过程也以tick结束。这意味着当您更改迭代时,NetLogo将首先执行所有新的设置,包括reset-ticks (将滴答到0),然后执行tick (将滴答带到1)。
如果您不希望这种情况发生,并且需要维护此结构(即go执行设置操作),则可以重新安排go过程,以便tick在之前发生,然后检查迭代更改的条件:
to go
moveproc
tick
let n count turtles
if n = 0 [
ifelse iteration = 0
[set iteration 1
setup-world]
[stop]
]
endPS:你提供的是一个极小的可复制的例子。
https://stackoverflow.com/questions/69053012
复制相似问题