将海龟移动到NetLogo前面的空白区域

将海龟移动到NetLogo前面的空白区域,netlogo,Netlogo,我正在努力想办法告诉我的海龟们,一旦他们已经在一个叫做“转海龟”的程序中被转过来,就让他们向前移动到一块空地上 它产生了这个错误,我理解,但无法解决如何修复 WITH expected input to be an agentset but got the patch (patch 1 -2) instead. error while solute 2 running WITH called by procedure MOVE-TURTLE called by procedure GO

我正在努力想办法告诉我的海龟们,一旦他们已经在一个叫做“转海龟”的程序中被转过来,就让他们向前移动到一块空地上

它产生了这个错误,我理解,但无法解决如何修复

WITH expected input to be an agentset but got the patch (patch 1 -2) instead.
error while solute 2 running WITH
  called by procedure MOVE-TURTLE
  called by procedure GO
  called by Button 'go'
只是以更具可读性的方式回复一些评论: 对不起,我认为我解释得不太好,因为我刚刚删除了一小部分代码。也许这更有意义

to go 
ask turtles 
[move-turtle] 
end 

to move-turtle 
turn-turtle 
if (not any? turtles-on patch-ahead 1) 
[fd 1] 
end

所以我只想用这段代码将被“turn turtle”翻转的海龟移动到前面1的空白区域,最好占据整个区域,就像它们“发芽”一样。谢谢

听起来你想做一些不同的事情,如果你真的想
成为一个单独的补丁。所以也许

to move
  ifelse (any? turtles-on patch-ahead 1) [
    turn-turtle
  ][
    fd 1
  ]
end

如果前面的补丁不是空的,您希望发生什么?基本上错误是不能在单个补丁上使用“with”。在代码中,您将变量“ahead”定义为单个补丁(patch ahead 1),然后尝试在其上使用“with”来定义变量“empty ahead”。这是不可能的,因为您无法生成非集合的部分的子集。现在还不清楚你的代码的目的是什么:乌龟到底要做什么?基本上,我只想让乌龟向前移动1到一个空位。如果它不是空的,它什么也不做。我试着用“and”来代替例如“let avail ahead(ahead)and(not any?turtles here)”,但这也没用。我不明白。您的编辑基本上使用了我的答案,但使其成为无条件的。还有问题吗,或者我的回答基本上给了你所需要的?如果仍然存在问题,那是什么?我认为仍然存在问题,我添加的编辑代码与您的代码类似,现在使它们移动正常,但海龟仍然在彼此的顶部移动,而不是以体积独占的方式。我要所有的乌龟都转过来。我的主要问题是让它们向前移动到一块空地上,而不是彼此重叠。顺便说一下,如果有点困惑的话,很抱歉!NetLogo代码让我很困惑!请参考我在正文中的编辑,谢谢您的尝试!
to move
  ifelse (any? turtles-on patch-ahead 1) [
    turn-turtle
  ][
    fd 1
  ]
end