Ну, во-первых, ваш примерный код должен работать, если черепахи 1, 2, 3 и 4 существуют. Черепахи в NetLogo индексируются с 0
, поэтому я подозреваю, что вы делаете что-то вроде:
create-turtles 4
(foreach [1 2 3 4] [-16 -16 -16 -16] [12 11 10 9] [ask turtle ?1 [setxy ?2 ?3]])
И получают что-то вроде:
ASK expected input to be an agent or agentset but got NOBODY instead.
... потому что ваш код пытается ask
turtle 4
, которого не существует. Изменение вашего первого списка на [0 1 2 3]
исправит это.
Это лучший способ делать то, что вы хотите? У меня недостаточно информации, чтобы быть уверенным, но я подозреваю, что вам нужно что-то поближе:
clear-all
let coordinates [[-16 12] [-16 11] [-16 10] [-16 9]]
create-turtles length coordinates
(foreach (sort turtles) coordinates [
ask ?1 [ setxy item 0 ?2 item 1 ?2 ]
])
Вы сможете понять, как это работает, если знаете, что sort turtles
превращает ваш turtles
набор агентов в список, а item
позволяет получить определенный элемент в списке.
Изменить:
Выполнение create-turtles length coordinates
вместо чего-то вроде create-turtles 4
гарантирует, что у вас будет такое же количество черепах, как количество заданных вами координат, но это то, что может или не может относиться к вашей ситуации.
Изменить 2:
Еще более простой подход, который будет работать, только если ваши черепахи еще не созданы, будет:
clear-all
let coordinates [[-16 12] [-16 11] [-16 10] [-16 9]]
foreach coordinates [
create-turtles 1 [ setxy item 0 ? item 1 ? ]
]
person
Nicolas Payette
schedule
09.11.2012