2016-04-08 8 views
1

Ich bin neu in NetLogo, so, wenn meine Frage wie ein Anfänger liest ... das ist der Grund.Netlogo, Neighbors4 und Auswahl von agenten Farbe

Ich benutze den Befehl neigbhors4, um die vier Nachbarn eines Aggressor-Agenten zu identifizieren. Ich möchte dann aus den vier Nachbarn anhand ihrer Farbe und einer Prioritätsrangliste (Schwarz, Braun und Weiß) auswählen. Wenn die Farbe des Nachbarn schwarz ist (Priorität # 1), würde der nächste Satz von Anweisungen auf diesen Agenten angewendet werden. Wenn keiner der Nachbarn schwarz ist, würde die nächste Farbe in der Prioritätsrangfolge (braun) die Anweisung erhalten.

Würde dies am besten erreicht wird, irgendeine Art von Liste mit?

Antwort

1

Die folgende Antwort betont für einen Anfänger Einfachheit. Es handelt sich also nur um die sehr spezifische Frage.

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 

Sie werden feststellen, dass dieser Code viele Wiederholungen hat. Es wäre wahrscheinlich eine gute Idee, solche Wiederholungen in ein Unterprogramm zu bündeln, wie zum Beispiel

to-report choose-nbr [#color] 
    let _candidates neighbors4 with [pcolor = #color] 
    report ifelse-value (any? _candidates) [one-of _candidates] [nobody] 
end 
+0

. Ich werde das jetzt ausprobieren. Vielen Dank! – HS3