Netlogo Sprouting turtles at regular intervals

后端 未结 1 775
小鲜肉
小鲜肉 2020-12-22 07:39

I want to place turtles on each of the black patches(below Figure) at a specified step size: \"enter

相关标签:
1条回答
  • 2020-12-22 08:06

    Here:

    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
    

    Here is how you would use it:

    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
    

    Constraints:

    • d has to be a multiple of 0.1
    • world wrapping needs to be turned off
    0 讨论(0)
提交回复
热议问题