wait - 让海龟等待 x 刻度数

标签 wait netlogo

我正在尝试做的部分工作是让一种海龟四处移动,但是当一只海龟到达目的地时,海龟会等待一定数量的滴答声,然后再继续吗?也可以让海龟根据它们的目的地(不同的补丁颜色)等待不同数量的滴答声。是制作海龟品种或全局变量来计算滴答声的情况吗?希望相关的代码如下。

最佳答案

你是对的,这可以通过让海龟计算它们在一 block 补丁上的刻度数来完成。此外,这必须是海龟变量而不是全局变量,因为每只海龟对此都有不同的值

我使用的方法是这样的:

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

    繁殖 [visitors visitor]

    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
    

关于wait - 让海龟等待 x 刻度数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22634312/

相关文章:

netlogo - 任何?预期输入是一个主体集,但得到的数字是 0

java - 线程放弃等待并抛出异常的方法

social-networking - NetLogo:比较邻居的值

Javascript SignalR 等到服务广播所有消息

c - 执行错误 : no such file or directory

Netlogo:询问定向链接 "my-in-turtle"和 "my-out-turtle"

simulation - 如何在 Netlogo 中随时间改变海龟的颜色?

netlogo - NetLogo 中链接代理之间的访问属性

linux - 服务器只接受一次并终止

ios - 等待 Swift 计时器完成