我要做的部分工作是让一只乌龟到处走动,但是当一只乌龟到达目的地时,乌龟要等待一定的滴答声才能继续?也有可能使海龟根据其目的地(不同的斑块颜色)等待不同数量的tick。是制作海龟品种或全局变量来计算of的数量吗?希望相关的代码如下。

最佳答案

没错,这可以通过让海龟计算它们在补丁上的tick虫数量来完成。此外,这必须是乌龟变量,而不是全局变量,因为每只乌龟为此具有不同的值

我使用的方法是:

  • 乌龟到达目的地后,将ticks(记录到现在为止已经过去的滴答声数量的全局变量)记录到乌龟变量中,即ticks-since-here。这就像时间戳一样。
  • 在每个连续的刻度上,检查当前时间ticks全局变量和ticks-since-here turtle变量之间的差异。如果它变得大于允许乌龟停留在补丁上的滴答声数量,请让它选择并移动到新的目的地。

    品种[访客访客]
    globals [ number-of-visitors ]
    
    visitors-own [
      ; visitors own destination
      destination
      ticks-since-here
    ]
    
    to go
      ask visitors [
        move
      ]
      tick
    end
    
    to move
      ; Instructions to move the agents around the environment go here
      ; comparing patch standing on to dest, if at dest then  choose random new dest
      ; then more forward towards new dest
      ifelse ( patch-here = destination )
      [
        if ticks - ticks-since-here > ticks-to-stay-on-patch patch-here
        [
          set ticks-since-here 0
          set destination one-of patches with
          [
            pcolor = 65 or pcolor = 95 or pcolor = 125 or pcolor = 25 or pcolor = 15 or pcolor = 5
          ]
        ]
      ]
      [
        face destination
        forward 1
        if ( patch-here = destination )
        [
          set ticks-since-here ticks
        ]
      ]
    end
    
    to-report ticks-to-stay-on-patch [p]
      if [pcolor] of p = 65
        [
          report 6
        ]
      if [pcolor] of p = 95
        [
          report 5
        ]
      if [pcolor] of p = 125
        [
          report 4
        ]
      if [pcolor] of p = 25
        [
          report 3
        ]
      if [pcolor] of p = 15
        [
          report 2
        ]
      if [pcolor] of p = 5
        [
          report 1
        ]
    end
    
    to setup-people
      ;;;; added the following lines to facilitate world view creation
      ask patches
      [
        set pcolor one-of [65 95 125 25 15 5]
      ]
      set number-of-visitors 100
      ;;;;
    
      create-visitors number-of-visitors
      [
        ask visitors
        [
          ; set the shape of the visitor to "visitor"
          set shape "person"
          ; set the color of visitor to white
          set color white
          ; give person a random xy
          setxy (random 50) (random 50)
          ; set visitors destination variable
          set destination one-of patches with
          [
            pcolor = 65 or pcolor = 95 or pcolor = 125 or pcolor = 25 or pcolor = 15 or pcolor = 5
          ]
        ]
      ]
    end
    
  • 10-05 23:21