2016-12-06 56 views
1

我想從模擬中的所有海龜中隨機生成的距離eps中選擇所有修補程序,並將它們的顏色重置爲黃色。這實際上是在模擬中的每隻烏龜周圍繪製一圈補丁。我嘗試了幾種不同的選擇,但沒有成功。通過閱讀這個論壇,我發現了一些看起來很有希望的代碼,但仍然存在一些問題(在這裏發佈)。我感謝任何關於調整此代碼或使用其他方法解決此問題的建議。選擇海龜距離x的所有修補程序

let eps2 eps 
foreach [ eps2 ] 
    [ 
     ask patches with 
    [ 
     distance myself > eps2 - 0.5 and 
     distance myself < eps2 + 0.5 
    ] 
    [ 
    set pcolor yellow 
    ] 
] 

eps是一個龜變量,所以使用let命令允許我繞過在補丁上下文中使用龜變量。

foreach命令不識別eps,因爲它不是一個常量,有沒有另一個命令我可以在這裏使用?

回答

1

您可以使用list(見下文),但是......您爲什麼需要一個列表?就目前而言,不需要使用列表。

to setup 
    ca 
    crt 1 
    ask turtle 0 [test] 
end 
to test 
let eps2 10 
foreach (list eps2) ;you can use `list` 
    [ 
     ask patches with 
    [ 
     distance myself > eps2 - 0.5 and 
     distance myself < eps2 + 0.5 
    ] 
    [ 
    set pcolor yellow 
    ] 
] 
end 

附錄:

既然你表明你實際上並不需要的列表中,你可以嘗試沿着以下線的東西:

to test2 
    ca 
    crt 1 
    ask encirclingPatches turtle 0 10 1 [set pcolor yellow] 
end 

to-report encirclingPatches [#t #dist #width] 
    let _w2 (#width/2) 
    report patches with [ 
    distance #t > #dist - _w2 
    and 
    distance #t < #dist + _w2 
    ] 
end 
+0

謝謝,這個工作完美。要回答您的問題,我不需要創建eps2列表。我主要關心的是選擇龜的距離eps(+/- 0.5)內的貼片。我可以通過其他方式來編寫本節的代碼,但這是我能找到的最接近的例子。以前我在半徑範圍內使用,但找不到只選擇周邊點的方法。 – bmarcek