2016-04-18 8 views
1

Ich suche, diesen Code zu ändern, damit sich die Schildkröte nur in die Zelle vorwärts bewegt, wenn sich dort noch keine Schildkröte befindet.Wie überprüfe ich eine Zelle vorwärts 1 für eine Schildkröte?

ask turtles 
    [ let close-friend min-n-of 1 turtles with [my-group = [my-group] of myself] [distance myself] 
    ask close-friend 

    [ face myself 
    forward 1 
    ] 
] 

Ich sah von der Anzahl der Schildkröten Zugabe vorwärts 1 auf eine Variable und dann eine IF-Anweisung an dem Hinzufügen, aber ich konnte es nicht zur Arbeit kommen.

Jede Antwort wird sehr geschätzt.

Antwort

1

Überprüfen Sie, ob auf dem Patch keine Schildkröte ist vor:

if not any? other turtles-on patch-ahead 1 [forward 1] 

Sie wollen, wenn die Schildkröte überprüfen vorwärts zuerst bewegen kann, weil Patch-ahead niemand melden.

if can-move? 1 and not any? other turtles-on patch-ahead 1 [forward 1] 
+0

Das ist perfekt, vielen Dank. – AFarquhar

+1

Ob es klarer ist, ist strittig, aber Sie können 'if can-move 1' anstelle von' if patch-ahead 1! = Nobody' verwenden. Siehe das Dokument für ['can-move?'] (Http://ccl.northwestern.edu/netlogo/docs/dictionary.html#can-move). –

+1

'Other' ist hier notwendig, da 'Patch-Ahead 1' eigentlich der gleiche Patch ist, auf dem die Turtle bereits steht, wenn die Turtle-Überschrift kein Vielfaches von 90 ist. Wenn das überraschend erscheint, siehe nächstes Patch-Beispiel in der Codebeispielabschnitt der NetLogo-Modellbibliothek. –