【问题标题】:Moving turtles towards two different colors of the patch in NetLogo在 NetLogo 中将海龟移向两种不同颜色的补丁
【发布时间】:2025-11-12 22:30:01
【问题描述】:

我有一个基本的 NetLogo 问题。

我想对以下内容进行编码:

  1. 乌龟问斑块是什么颜色,如果是绿色,它可以在绿色斑块上行走。

我知道这是 NetLogo 的一个基本问题。但是,我正在尝试,但出现了一些错误,例如:MOVE-TO 预期输入是代理,但得到了 NOBODY

有人可以帮助我了解我的问题所在,或者提供任何建议甚至模型来让我探索吗?欢迎任何帮助。谢谢

globals [ edge-size ]

to setup
    clear-all
      set edge-size 10
      set-patch-size 20
      let pcolors []
      set pcolors [135 55 105 85]
      ask patches [
        set pcolor item (random 4) colors
        ]
      crt 1 [
        set size 1
        set color black
        ;pen-down
        ]
     reset-ticks
     end

  to go
   ask turtles [
    if pcolor = green ;; if own pcolor patch = green
     [ move-to one-of patches with [ pcolor = "green" ] ]    
 end

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    此代码move-to [ veg ] of patch-under-me 表明您对 NetLogo 的想法有几个基本的误解。我建议您多做一些教程并查看 NetLogo 内置的模型库,以找到与您想做的类似的模型。您还需要构建更小的部分,并在移动到下一个部分之前让一个部分正常工作。

    move-to [ veg ] of patch-under-me 有什么问题?

    1. [ veg ] of patch-under-me 是一个具有粉色或绿色等值的变量。所以你说的是“转向绿色”
    2. 更重要的是,它返回的颜色是乌龟现在站立的颜色,而不是你想让它去的地方

    你可能想要更多类似的东西:

    move-to one-of patches with [veg = "green"]
    

    所以回到基础。只有两种颜色(比如红色和蓝色),然后四处移动海龟,试图找到一个红色的补丁。在做任何其他事情之前先完成这项工作。现在只有几个红色补丁,你的代码还能用吗?然后你就可以开始添加一堆不同的条件和颜色了

    【讨论】:

    • 我使用 ask turtles [ move-to one-of patch with [pcolor = "green"] 并出现此错误:MOVE-TO expected input to be an agent but got NOBODY instead.
    • 那是因为“green”是一个文本字符串,而不是一种颜色,而pcolor 是一种颜色。我在示例代码中使用了变量名称“veg”。如果你已经放弃了,那么move-to one-of patches with [pcolor = green]
    • 非常感谢 JenB