首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetLogo中的滴答问题

NetLogo中的滴答问题
EN

Stack Overflow用户
提问于 2021-09-04 06:42:52
回答 1查看 72关注 0票数 2

我正在努力理解并看看是否有可能更改以下内容:

我有一个有两个迭代的代码。与它的配置完全一样。通过点击安装-所有按钮,然后点击一次按钮4次。调用第二次迭代。但是,第二次迭代是从滴答1开始的,而不是从0开始的。为什么会发生这种事?有办法解决这个问题吗?

代码语言:javascript
复制
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

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-04 10:16:49

您更改迭代的时刻是在go过程(即set iteration 1 setup-world)中。但是,go过程也以tick结束。这意味着当您更改迭代时,NetLogo将首先执行所有新的设置,包括reset-ticks (将滴答到0),然后执行tick (将滴答带到1)。

如果您不希望这种情况发生,并且需要维护此结构(即go执行设置操作),则可以重新安排go过程,以便tick在之前发生,然后检查迭代更改的条件:

代码语言:javascript
复制
to go
  moveproc
  tick
  
  let n count turtles
  if n = 0 [
   ifelse iteration = 0
    [set iteration 1
     setup-world]
    [stop] 
  ]
end

PS:你提供的是一个极小的可复制的例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69053012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档