如何在Netlogo中随着时间改变乌龟的颜色?

时间:2019-12-14 15:14:09

标签: simulation netlogo

在我正在进行的仿真中,我有红色的乌龟。 我希望它们在开始时为黄色,然后在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

1 个答案:

答案 0 :(得分:2)

请注意,设置过程中已包含tick。那需要在你的程序中。设置适用于仿真开始时的所有操作,而每次操作都会进行。命令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 ]