Как опознать черепаху - PullRequest
1 голос
/ 06 мая 2019

Как можно идентифицировать черепаху, чтобы я мог попросить ее сделать что-нибудь.

Например,

create-turtles 3
set turtle-star one-of turtles

ask turtles[ if  turtle != turtle-star [make-other-turtles-but-turtle-star-do-some-dirty-things]]

Возможно ли это, похоже на число или другое свойство, уникальное в черепах дляпример:

idTurtle

Или как я могу отличить черепаху.

Я думаю, что могу сделать дань под названием

IsTurtleStar?.

Но это похоже на пустую трата временипамяти.

Как ты это делаешь?

Ответы [ 2 ]

3 голосов
/ 06 мая 2019

mattsap является правильным, что вы, вероятно, ищете атрибут who turtle. Однако, если вы обнаружите, что используете номер who, вы должны пересмотреть свой подход в NetLogo. Почти всегда лучше использовать agentsets напрямую, чем полагаться на идентификатор.

Посмотрите на эту полную модель. Вы увидите, что я просто называю черепаху «звездой черепахи» всякий раз, когда она мне нужна.

to testme
  clear-all
  create-turtles 3
  [ setxy random-xcor random-ycor
    set color blue
  ]
  let turtle-star one-of turtles
  ask turtle-star [ set size 3 ]
  ask turtle-star
  [ ask other turtles
    [ set color red
    ]
  ]
end

Но если вам нужно, чтобы черепаха-звезда существовала в разных процедурах, вам понадобится либо глобальная переменная (и использовать set вместо let) для хранения черепахи (а не ее число кто), либо вам понадобится ваше предложение флаг как атрибут turtles-own.

1 голос
/ 06 мая 2019

Я полагаю, вы хотите использовать черепаху who (переменная черепахи), которая является уникальным идентификатором.

Итак, в ваших терминах:

create-turtles 3
set turtle-star [who] of one-of turtles

ask turtles with [who != turtle-star][make-other-turtles-but-turtle-star-do-some-dirty-things]
...