2017-03-14 11 views
1

私はNetlogoを初めて使い、深いところでチャックされています。各カメは1〜9の間の数である可変コロニーを有する。私はそれと同じコロニー数を持つ最も近い隣に向かってカメの顔をしたいと思っています。その後、動きます(そのビットはうまく動作します)。 現時点では私はこれが動作し、1か所に移動するために、すべてのカメを取得しますその変数については別のカメに問い合わせてください

let newTurtle min-one-of other turtles [10] 
let variableA [ask newTurtle [colony]] 
ifelse colony = variableA newTurtle [face newTurtle] [rt random 360] 
move-forward 

を持っている:私が試した何

let newTurtle min-one-of other turtles [10] 
face newTurtle 
move-forward 

はその植民地のためにその隣人を依頼するカメを取得することです同じ方向への移動があれば、それ以外はランダムな方向へ移動します。 "期待値のリテラル値"は現在2行目のエラーです。 これは正確に私が望むものではないが、私はこれを得ることができないことを知っている。この問題や私の主な問題についての助けがあれば幸いです!ありがとう

答えて

2

あなたの主な問題は、最初のブロックにmin-one-ofを使用したことに起因する可能性があります。 dictionary entry for that primitiveをチェックし、そのパラメータの1つとしてレポーターが必要であることに注意してください。 "[10]"は機能しません。さらに、min-one-ofは実際にレポーターの最低値を要求します。だから、少し違ってこれにアプローチする必要があると思います。あなたはこれを次のステップに分けることができます。まず、それと同じ植民地であるこれらのカメを識別するために働くカメを取得:

ask turtles [ 
    let my_colony other turtles with [ colony = [colony] of myself ] 

これは演技カメが属している世界のすべてのカメで構成され、「my_colony」と呼ばれる一時的な変数を作成しています行動するカメと同じコロニー。次に、行動するカメがそのグループの最も近いメンバーを選択するようにします。

ここlet target min-one-of my_colony [ distance myself ]

min-on-ofためagentsetが「my_colony」は、レポーターは、その最小値を持つ「my_colony」でカメを返す、「[自分の距離]」である:同じコードブロック内行動するカメまでの距離。次に、ターゲットが存在することを確認します。さもなければ、特定のコロニーに唯一のカメがある場合は、エラーが発生します。同じコードブロックでは、まだ:

if target != nobody [ 
     face target 
     fd 1 
    ] 

これがうまくいけば、明らかにする必要があるかどうか教えてください。

+0

恐ろしく!それは意味をなさない、私はそれを与えるだろう。再度、感謝します – pokeairguy

関連する問題