避免有龟网的补丁

时间:2013-12-30 15:54:06

标签: simulation netlogo

任何人都可以帮助我。我正试图模拟一种情况,即龟将随机坐在长凳上(红色补丁),如果长凳被占用,它将找到另一个。 1只乌龟:1个补丁

breed [kids kid]

breed [adults adult]

breed [oldies old]

kids-own [step]

adults-own [step]

oldies-own [step]

to setup

  __clear-all-and-reset-ticks

  ask patches [setup-world]

  set-default-shape turtles "person"

  create-kids number-of-kids 

  create-adults number-of-adults 

  create-oldies number-of-oldies

  ask kids[

    set color green
    set size 1              
    setxy -10 0
    set heading random-float 90
    rt 45 - random-float 90]

  ask adults[

    set color orange
    set size 1                                    
    setxy -10 0
    set heading random-float 45
    rt 45 - random-float 90]



to setup-world

  set pcolor white

   if ( pxcor = 10 ) and ( pycor < 10 and pycor > -11 ) [ set pcolor brown ]

   if ( pxcor = -10 ) and ( pycor < 10 and pycor > 1 ) [ set pcolor brown ]

   if ( pxcor = -10 ) and ( pycor < -1 and pycor > -11 ) [ set pcolor brown ]

   if ( pycor = 10 ) and ( pxcor < 11 and pxcor > -11 ) [ set pcolor brown ]

   if ( pycor = -10 ) and ( pxcor < 10 and pxcor > -11 ) [ set pcolor brown ]


   if ( pxcor = 8 ) and ( pycor < 8 and pycor > 2 ) [ set pcolor red ]

   if ( pxcor = 8 ) and ( pycor < -2 and pycor > -8 ) [ set pcolor red ]

end


to go

   ask kids[

    if pcolor = red and not any? other turtles-here[
      move-to patch-here
      stop]
    fd 1

    ifelse pcolor = red and any? other turtles-here
      [rt random 90]
      [fd 1]



  ]



  ask adults[

    if pcolor = red and not any? other turtles-here[
      move-to patch-here
      stop]
    fd 1

    ifelse pcolor = red and any? other turtles-here
      [rt random 90]
      [fd 1]



  ]







  tick



end

1 个答案:

答案 0 :(得分:3)

你已经以正确的方式完成了大部分编码,我已经测试了你的代码,除了你在孩子和成人的go函数中的第二个条件外它工作正常。

做同样事情的一种方法是添加一个乌龟变量,例如坐着?变量并在初始化时使其变为假,如果乌龟坐在长凳上则使其成立。只问虚假坐着的海龟?寻找另一条板凳。

   turtles-own [seated?]

      ask kids with [not seated? ][


rt random 10
fd 1

        if pcolor = red and not any? other turtles-here [
          move-to patch-here
          set seated? true]


      ]



      ask adults with [not seated?]
      [
    rt random 10
    fd 1
        if pcolor = red and not any? other turtles-here[
          move-to patch-here
          set seated? true]
     ]

我已经通过显示每个pacth中的海龟数量测试了代码,每个红色补丁只有一只海龟

ask patches with [pcolor = red ][set plabel count turtles-here]
相关问题