Итак, есть пара небольших проблем с вашим кодом, как написано.
Во-первых, в NetLo go, за командой if
должен следовать блок команды, для каждой записи в словаре. . Таким образом, вы не можете сделать command if someCheck
, вам нужно сделать if someCheck [ command ]
Во-вторых, neighbors4 with [color = red]
даст вам набор агентов, в данном случае набор патчей. Поэтому вы не можете сравнивать набор операторов с числом, как в neighbors4 with [pcolor = red] > 3
. Вам необходимо получить count
из набора агентов: count neighbors4 with [pcolor = red] > 3
ask patches with [pcolor = blue] [
if (count neighbors4 with [pcolor = red] > 3) [
set pcolor red
]
]
Кроме того, если мы заметим, что внутренний оператор if - это просто дополнительный фильтр, на котором синие пятна станет красным, мы можем фактически использовать оператор with
из внешнего ask
и немного упростить вещи:
ask patches with [pcolor = blue and (count neighbors4 with [pcolor = red] > 3)] [
set pcolor red
]
Надеюсь, это поможет.