2016-08-12 69 views
0

我想請一隻烏龜移動到距離另一隻烏龜至少x距離的任何補丁。因此,在NetLogo和英語的組合中,它應該是:如何移動到距離烏龜至少x距離的補丁

move-to one-of patches with [distance to nearest turtle > 4] 

請問這怎麼辦?

+0

你想要做的,如果沒有這樣的補丁呢? – Alan

+0

我總是在圍繞這一點與SO鬥爭 - 我想盡可能具體地向我提出我的問題,通過足夠的通用性來有用。事實上,我認爲我可以處理這一點 - 整個事情將成爲一系列if語句的一部分。 – ThomasC

回答

1

你找到最近的龜使用min-one-of + [distance myself]記者。你還需要確保你只看到other turtles,因爲一隻烏龜永遠是最靠近自身的烏龜。

的代碼可以被分解如下:

let nearest-turtle min-one-of other turtles [distance myself] 
move-to one-of patches with [distance nearest-turtle > 4] 

對於(可以說)更好的可讀性。

編輯:謝謝尼古拉斯的更正。你是完全正確的。

+1

不僅僅是可讀性:如果你在'with'塊中附加'other',它就是指調用補丁。每個人都會因此被咬傷。它可以導致非常微妙的錯誤... –

+1

我認爲你在long表達式中使用'myself'也是錯誤的:它指的是調用補丁,而不是你想要的調用龜。 –

+0

這是問題開始的地方!它應該是距離另一隻烏龜最小距離的補丁,而不是正在進行移動的烏龜。 「補丁與」的使用我認爲這樣可以讓正確的代理人進行呼叫。我明天會試一試。感謝所有評論和回覆。 – ThomasC

0

使用上述所有的,這裏是一個解決方案:

to go 
    ask patches [set nearest-turtle min-one-of turtles [distance myself] 
    set distance-turtle distance nearest-turtle 
    ] 

    crt 1 [ 
    set color blue 
    move-to one-of patches with [distance-turtle > 4]] 

end