我想将当前的移近满足特定条件的其他(例如,颜色=绿色(。
我正在以艰难的方式做到这一点(因为我不知道更好(,通过尝试计算当前与所有其他满足条件的的平均距离,并计算 x+1、x-1、y+1、y-1 的平均值。然后,以最小的一个表示移动的方向。我知道不是很优雅,并且将运动限制在水平和垂直,但我想不出更好的办法(唯一打动我的另一个想法是计算满足条件的所有海龟的平均 x 和 y 坐标并将当前的移向那个方向,但这对我来说似乎更荒谬(
问题是,即使使用我笨拙的解决方案,我也一事无成,因为我正在努力计算与"绿色"海龟的平均距离。
如果要计算平均距离,可以让询问的叫mean
和[distance myself]
。
通过此设置:
to setup
ca
crt 10 [
set color green
move-to one-of patches with [ pxcor < 0 ]
]
crt 1 [
set color red
move-to one-of patches with [ pxcor > 10 ]
]
reset-ticks
end
调用下面的函数将使红海龟首先打印出自身和所有绿海龟之间的所有距离,然后打印出这些距离的平均值:
to calc-mean-distance
ask turtles with [ color = red ] [
print [ distance myself ] of turtles with [ color = green ]
print mean [ distance myself ] of turtles with [ color = green ]
]
end
除此之外,我不是 100% 确定你想做什么——你是否希望将询问的移向最近的符合某种条件的?如果是这样,这可能对您有用:
to go
ask turtles with [ color = red ] [
let target min-one-of ( turtles with [ color = green ] ) [ distance myself ]
face target
ifelse distance target > 1 [
fd 1
] [
move-to target
]
]
tick
end
如果你想让提问的向满足条件的海龟的地理中心移动,你确实可以得到你所描述的这些海龟的平均x和y坐标,然后让提问的向那个点移动:
to go
let central-x mean [ xcor ] of turtles with [ color = green ]
let central-y mean [ ycor ] of turtles with [ color = green ]
ask turtles with [ color = red ] [
facexy central-x central-y
ifelse distancexy central-x central-y > 1 [
fd 1
] [
setxy central-x central-y
]
]
tick
end
如果这些不是您想要实现的目标,请随时发表评论以进行澄清!