Репортер can-move?
, на который ссылается ваша ссылка, является односторонним (и ссылается на другой: patch-ahead distance != nobody
). В определении словаря он отмечает, что репортер сообщает true
, когда черепаха может продвинуться на некоторое расстояние, не нарушая топологию, другими словами, может ли черепаха переместиться в существующий участок. Любые патчи "за гранью" мира без переноса мира не существуют, и поэтому возвращают nobody
.
tick
или tick-advance
не должны входить в эту проблему, так как оценка patch-ahead
выполняется каждой черепахой независимо от времени. Например, вот игрушечная модель, у которой вообще нет tick
или tick-advance
:
to setup
ca
crt 200 [
move-to one-of patches with [ not any? turtles-here ]
pd
]
reset-ticks
end
to go
let speed 1 * 0.1
ask turtles [
if can-move? speed and not any? other turtles-on patch-ahead speed [
fd speed
]
]
end
Обратите внимание, что я полностью отключил окружающий мир и получил результат, подобный показанному ниже - без ошибок, и черепахи перестали двигаться либо потому, что там есть черепаха, либо потому, что они столкнулись с край света: