NetLogo:在不使用海龟的情况下创建格子/网格资源世界?

时间:2015-08-25 20:47:56

标签: netlogo

我想创建一个“网格化”的资源世界,与中心补丁保持特定的距离,并保持这些补丁之间的距离相等。由于计算需求,我宁愿不使用海龟来创造这个斑驳的世界。我期望创造这样的东西:

enter image description here

同样,我想将补丁之间的距离定义为滑块工具。我徘徊使用龟格步行,然后将补丁变成不同的颜色,但有没有办法如何没有乌龟?谢谢你的任何建议!

我的完全没有工作的例子:

  to setup
  clear-all
  ask patches [set pcolor green]
    foreach [5 10 15] [
      repeat 9 [
        make-red-patch ?
      ]
    ]
  reset-ticks
end  

to make-red-patch [dist]
  crt 1 [
    fd dist
    rt 90
    while [pcolor = red] [
      bk dist
      rt 90
      fd 2 * dist
    ]
    set pcolor red
    die
  ]
end

2 个答案:

答案 0 :(得分:5)

我不确定你需要什么,首先你提到你不想使用海龟,而在你自己的回答中你没有乌龟的补丁有问题。

可能有另一种方法可以解决这个问题:

to setup
  clear-all
  ask patches with [pxcor mod Grid = 0 and pycor mod Grid = 0] [set pcolor red]
end

这些是具有不同网格大小的示例: Grid size 9

Grid size 4

答案 1 :(得分:1)

经过更详细的搜索后,我在这里找到了答案:http://netlogo-users.18673.x6.nabble.com/Setting-up-agents-in-a-grid-formation-td4864083.html

他们考虑分发海龟,而不是补丁,然后归咎于海龟的品质。

以下是代码:

to setup
  clear-all
  create-turtles 1
  [ let $n 0  ; actual number of turtles on this patch
    let $s 0  ; current number of turtles on a side of square pattern - 1
    set heading 0
    ask patch-here [set pcolor red]
    repeat 16   ; number of needed turtles
    [ hatch 1 jump Grid ; make one turtle and move
      set $n $n + 1 ; increment count of curent side
      ask patch-here [set pcolor red]
      if $n > $s  ; if side finished...
      [ 
        right 90 set $n 0 ; turn and reset count
        ask patch-here [set pcolor red]
        ; if headed up or down, increment side count
        if heading mod 180 = 0 [ set $s $s + 1 
          ]
      ]
    ]
   die
  ]
end

产生: enter image description here

我仍然不知道如何处理没有乌龟的1个补丁(右下角),但这个例子对我帮助很大! :)