靠近海龟

时间:2019-03-02 17:23:27

标签: netlogo

我使用的是netlogo 6.0.4,我想从海龟身上拉近海龟。

我使用以下代码:

      create-players 1[
        set color red
        set size 5  
        set the-player self     
        set team "red"   
      ]
        create-balls 1 [
        set color orange
        set size 2.5
        set the-ball self   
        ] 
       to-report get-players-close-to-ball   
       report players with [distance the-ball <= 1] 
       end

但是我得到了这样的输出(代理集,0只海龟),我无法将其与自身进行比较:

to-report decision-steal-ball 
  let decision 0
  if (self = get-players-close-to-ball)[
    set decision 10
  ]
  report decision
end

。 所以我尝试使用:

to-report get-players-closer-to-the-ball
  report the-player with [distance the-ball <= 1]
end

但是我收到此错误: “原本以为输入是一个代理集,但却得到了乌龟(玩家10)。”

所以问题是:如何使球员更接近球?

1 个答案:

答案 0 :(得分:2)

您的第一个代码在过程中包含to-report,甚至在试图偷球之前都会产生错误。您也有一个概念上的问题-可能有任意数量的球员接近球。消息告诉您,此时没有球员靠近球。

NetLogo将返回一个与所有靠近球的球员的座席集。无法像'if self = agentset'一样测试agentset。您需要的是if member? self get-players-close-to-ball,这将检查self是否是该代理集的成员。更好的是,即使agentset为空,它也可以工作,因此您不必先进行测试if any?