1

配列からタートルの色を設定するにはどうすればよいですか?

ここに私のコードがありますが、動作しません:

let colors array:from-list ["red" "yellow" "blue" "pink"]
set index random 3
let c array:item colors index
set color array:item colors index

これにより、次のエラーが発生します。

can't set flower variable COLOR to non-number blue error while flower 101 running SET
4

3 に答える 3

4

NetLogo カラーでは、14 のメイン カラーと黒と白の名前が定数として定義されているため、引用符は必要ありません。また、それらは定数であるため、リテラル値のように扱われるため、括弧で囲まれたリスト表記で使用できます。それ以外の場合は、 (list . . . ) レポーターを使用してそのリストを作成する必要があります。

また、配列の使用は必要以上に複雑になる場合があります。

あなたは書ける:

let colors [ red green blue yellow ]
set index random 3
let c item colors index
set color c

追加のボーナスとして、one-of プリミティブを使用して上記のすべてを実行できます。

set color one-of [ red green blue yellow ]
于 2012-01-18T14:25:20.183 に答える
3

受け入れられた答えは正しいものですが、余談ですが、read-from-string関数は基本的な NetLogo カラー名をカラー値として解釈することに注意してください。

observer> show read-from-string "red"
observer: 15

base-colorsまた、NetLogo の基本的な 14 色の配列を数値として報告する組み込み関数について知っておくと便利です。これにより、次のようなことが可能になります。

ask turtles [ set color one-of base-colors ]
于 2012-09-27T18:45:56.450 に答える
1

このサイトによると、色の名前を数値に設定してみてください

于 2011-12-23T14:16:07.313 に答える