2016-04-08 6 views
1

Я новичок в NetLogo, поэтому, если мой вопрос читается как новичок ... вот почему.Netlogo, Neighbors4 и выбрав агент-цвет

Я использую команду 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 
+0

Я был в состоянии следовать логике здесь. Я собираюсь попробовать это сейчас. Большое спасибо! – HS3

Смежные вопросы