Ich habe einen einzelnen blauen Patch und möchte eine Schildkröte auf den nächsten, leeren Patch zu bewegen. Die einzige Möglichkeit, dies zu tun, ist das Verwenden von In-Radius in einer Schleife, wobei die Radiusgröße jedes Mal um eins erhöht wird, aber gibt es einen besseren Weg?Wie kann ich eine Schildkröte so nah wie möglich zu einem bestimmten Patch bewegen?
Antwort
globals [bluey]
to setup
ca
ask one-of patches [set pcolor blue set bluey self]
ask n-of 250 patches [sprout 1]
end
to-report nearest-empty [#patch]
report min-one-of
[other (patches with [not any? turtles-here])] of #patch
[distance #patch]
end
to test
setup
;the following fails if all patches occupied
;(can add a test for nobody)
ask nearest-empty bluey [set pcolor red]
end
Der Code testet derzeit nicht auf die "leere" Bedingung. 'nearest-empty' sollte so etwas wie'report min-one-von anderen Patches mit [not any? Schildkröten-hier] [distance mich] ' –
@NicolasPayette Einverstanden. (Aber das betrifft nur "Test".) Basierend auf der Problembeschreibung nahm ich weniger Schildkröten als Patches an. – Alan
Ich verstehe deine Antwort nicht; es scheint mir, als wäre 'nearest-empty' der richtige Ort, um zu überprüfen, ob der nächste Patch wirklich leer ist. Und als ich deinen Code ausgeführt habe, war der rote Patch manchmal besetzt, was meines Erachtens gegen die Anforderungen verstößt. –
Das ist eine ziemlich vage Frage Titel. – wolfsgang