2016-04-08 89 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