【问题标题】:Netlogo how to remove one turtle if it touches another oneNetlogo 如果一只乌龟碰到另一只乌龟,如何移除它
【发布时间】:2015-12-01 13:06:30
【问题描述】:

我们正在开发一个 netlogo 模型,其中鱼被鲨鱼捕食和吃掉。它建立在植绒 3d - 替代模型之上。

目前我们让鲨鱼能够跟随鱼类,但我们不知道如何让它们吃掉它们。现在鱼儿一碰就死了:

ask fishes
  [ flock
    ;; if we've hit something
    ;; we're a goner
    if pcolor != black   [ hatch-dead-fishes 1
      [ bk 1 ]
      die ]
  ]

我们想要的是这样的:

ask fishes
  [ flock
    if xcor and ycor and zcor of shark == xyz cor of a fish   
      [ hatch-dead-fishes 1
      [ bk 1 ]
      die ]
  ]

现在显然我们不知道如何正确编写这段代码。我们还注意到,当一条鱼死去时,它实际上并没有从屏幕上移除。有谁知道

欢迎任何帮助!谢谢:)

【问题讨论】:

  • 坐标是有很多小数位的数字,所以它们永远不会匹配。 King-Ink 的回答回答了你的具体问题,会让鲨鱼在同一个补丁上吃鱼,但你可能想用distancein-radius 函数来捕捉鲨鱼一定距离内的鱼

标签: netlogo


【解决方案1】:

你的鱼很可能正在消失,它们只是被孵化死鱼取代。

让鲨鱼吃掉我发现的鱼

ask sharks [ask fish-here [die]]

(假设鱼和鲨鱼是两个品种,如果不是,你应该让它们成为两个品种)

改变你的代码来做同样的事情要花更长的时间

ask fishes
[ flock
if pxcor = [pxcor] of shark and pycor = [pycor] of shark and pzcor = [pzcor] of          shark 
    [ hatch-dead-fishes 1
    [ bk 1 ]
  die ]
]

我冒昧地将坐标更改为补丁而不是海龟,因为在浮点上很难发生碰撞

【讨论】:

  • 感谢您的快速回复!我们刚刚添加了代码,但现在鲨鱼似乎没有吃任何鱼。不过,这可能与我们的其余代码有关。您能帮我们快速浏览一下我们的代码吗? :)
猜你喜欢
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
相关资源
最近更新 更多