Netlogo定期发芽龟

时间:2014-08-17 03:38:06

标签: netlogo

我想以指定的步长在每个黑色斑块(图下方)上放置海龟:                  enter image description here

因此,如果步长减少,将会创建/发芽更多的海龟,更多的步长将导致更少的海龟。

我现在使用的代码:

ask patches with [pcolor = black][sprout-dead-turtles wall-agents [set color red]]

这给出了以下结果: enter image description here

上一个问题在同一行提出:Netlogo Sprouting turtles spaced at less than one patch

1 个答案:

答案 0 :(得分:2)

下面:

to fill-wall [ d ]
  set d precision d 1 ; make sure d is a multiple of 0.1
  let n precision (d / 0.1) 0 ; interval at which to hatch
  ask one-of possible-next-patches [ 
    sprout 1 [
      hatch 1
      let i 0
      let next-patch my-next-patch
      while [ next-patch != nobody ] [
        face next-patch
        while [ patch-ahead 0.55 != nobody and [ pcolor ] of patch-ahead 0.55 = black ] [
          fd 0.1
          setxy precision xcor 1 precision ycor 1 ; avoid floating point imprecisions
          set i i + 1
          if i mod n = 0 [ hatch 1 ]
        ]
        set next-patch my-next-patch
      ]
      die
    ]
  ]  
end

to-report possible-next-patches
  let empty-black-patches patches with [ pcolor = black and not any? turtles-here ]
  report empty-black-patches with [
    count neighbors4 with [ member? self empty-black-patches ] = 1
  ]
end

to-report my-next-patch
  report one-of possible-next-patches with [ member? self [ neighbors4 ] of myself ]
end

以下是您将如何使用它:

to setup
  ca  
  ; draw the background:
  ask patches with [ abs pxcor != max-pxcor and abs pycor != max-pycor ] [ set pcolor grey ]
  ask patches with [ pycor = max-pycor and abs pxcor <= 1 ] [ set pcolor white ]
  set-default-shape turtles "circle 2"
  fill-wall 0.3
end

约束:

  • d必须是0.1
  • 的倍数
  • 世界包装需要关闭