【问题标题】:How can I change color of turtles over time in Netlogo?如何在 Netlogo 中随时间改变海龟的颜色?
【发布时间】:2020-04-07 17:17:03
【问题描述】:

在我正在进行的模拟中,我有红海龟。 我希望它们一开始是黄色的,然后在 10 个滴答声后变成橙色,然后在 10 个其他滴答声后变成红色。 我该怎么做?

to ignite
  ask fires [
    if count neighbors > 0 [
      ask one-of neighbors with [pcolor = white or pcolor = green ]
      [
        if count fires-here < 6 [
          sprout-fires 3
          [ set color red set size 3 ]
        ]
      ]
    ]
  ]
end

【问题讨论】:

    标签: simulation netlogo


    【解决方案1】:

    请注意,您在设置过程中提供了tick。这需要在你的 go 过程中。 setup 适用于模拟开始时的一切,而 go 是每个时间步发生的事情。命令tick 使计数器前进时间步长,报告者ticks 读取时间步长计数器。

    如果你要根据乌龟的存活时间来改变它的颜色,你需要做的第一件事就是让乌龟知道它什么时候“出生”,所以为此创建一个变量并存储当前的在创建期间该变量中ticks 的值。

    fires-own
    [ state     ; you have this already
      birth-tick   ; this is the new one
    ]
    

    改变这个:

          sprout-fires 3
          [ set color red set size 3 set state "live"]
    

    对此(注意间距对 NetLogo 无关,但有助于提高可读性)

          sprout-fires 3
          [ set color red
            set size 3
            set state "live"
            set birth-tick ticks
          ]
    

    这样就创建了出生时间。现在,在您的 go 程序(您没有显示)中,您希望所有 10 刻旧的海龟都改变颜色。一种方法是:

    ask fires with [ birth-tick = ticks - 10 ] [ set color orange ]
    

    【讨论】:

    • 谢谢,我在 setup-fires 中添加了设置生日,这显然是一个错误