Netlogo, Neighbours4 и выбор по цвету агента

Я новичок в NetLogo, поэтому, если мой вопрос читается как новичок... вот почему.

Я использую команду neigbhors4, чтобы идентифицировать четырех соседей агента-агрессора. Затем я хочу выбрать из четырех соседей в зависимости от их цвета и приоритета (черный, коричневый и белый). Если цвет соседа черный (приоритет № 1), следующий набор инструкций будет применен к этому агенту. Если ни один из соседей не черный, то следующий цвет в рейтинге приоритетов (коричневый) получит инструкцию.

Будет ли это лучше всего сделать, используя какой-то список?

1 ответ

Решение

Следующий ответ подчеркивает простоту для новичка. Так что речь идет только об очень конкретном поставленном вопросе.

to-report choose-neighbor
  let _candidates neighbors4 with [pcolor = black]
  if any? _candidates [report one-of _candidates]
  set _candidates neighbors4 with [pcolor = brown]
  if any? _candidates [report one-of _candidates]
  set _candidates neighbors4 with [pcolor = white]
  if any? _candidates [report one-of _candidates]
  report nobody
end

Вы заметите, что этот код имеет много повторений. Возможно, будет хорошей идеей объединить такое повторение в подпрограмму, такую ​​как

to-report choose-nbr [#color]
  let _candidates neighbors4 with [pcolor = #color]
  report ifelse-value (any? _candidates) [one-of _candidates] [nobody]
end
Другие вопросы по тегам