2016-12-06 10 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はturtle変数ですので、letコマンドを使用すると、パッチのコンテキストでturtle変数を使用することを回避できます。

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

関連する問題