Я попробовал следующий синтаксис, но получил следующую ошибку.
Сообщения об ошибках: ЧЕРЕПАХИ-ВКЛ ожидали, что ввод будет агентом или набором агентов, но вместо этого получили НИКТО.
В 2D-экране при выдаче сообщения об ошибке произошла ошибка, когда черепашка достигла крайней правой ячейки. Если синтаксис "вперед 1", этот случай работает без ошибок. Но мне нужно использовать синтаксис «вперед 1 * 0,1» с «галочкой-вперед 0,1».
Я уже видел следующее описание, но я не решаю его до сих пор. Кто-нибудь знает хороший способ? Заранее спасибо.
https://ccl.northwestern.edu/netlogo/docs/programming.html#topology
Ниже приведен пример синтаксиса:
ask turtles with [xcor < max-pxcor][
if not any? turtles-on patch-ahead 1
[forward 1 * 0.1]]
Репортер 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
Обратите внимание, что я полностью отключил перенос мира и получил результат, подобный тому, что показан ниже: никаких ошибок, и черепахи перестали двигаться либо потому, что там есть черепаха, либо потому, что они наткнулись на край мир: