ご了承いただいたように、ご理解いただけると思います。これに取り組む1つの方法は、亀がどのようなステップを行ったか、そして彼らが現在のティックに行動したかどうかを知るように、変数をturtles-own
にすることです。そうすれば、彼らは順番に踏み出すことはありません。次に、サイクルをステップに分割し、論理演算子を使用して、設定した基準を満たしていない場合、カメにステップを踏み出さないようにすることができます。例:
turtles-own [
step1?
step2?
step3?
acted?
]
to setup
ca
reset-ticks
crt 10 [
set step1? false
set step2? false
set step3? false
set acted? false
]
end
to go
ask turtles [
set acted? false
]
cycle
tick
end
to cycle
let step1t one-of turtles with [ step1? = false ]
if step1t != nobody [
ask step1t [
set step1? true
set acted? true
;;; example step 1
set color red
set heading 45
fd 3
]
]
let step2t one-of turtles with [step1? = true and step2? = false and acted? = false]
if step2t != nobody [
ask step2t [
set step2? true
set acted? true
;;; example step 2
set size 1.5
set heading 90
fd 3
]
]
let step3t one-of turtles with [step2? = true and step3? = false and acted? = false]
if step3t != nobody [
ask step3t [
set step3? true
set acted? true
;;; example step 3
set color color + 2
set heading 135
fd 3
]
]
end
「待機」は、現在動作中のカメだけでなく、すべてのエージェントを停止するプリミティブです。上記の例を理解しているように、カメ1は前方に進み、シミュレーション全体が0.5秒待ってから2サイクル先に進み、シミュレーション待ちになります。実際にあなたが望むものを達成するかどうかはわかりません。 Netlogoエージェントは一度に1つの個別のアクションを実行するので、代わりに、あなたのすべてのカメがその手順内の個々のステップを実行するように、 'cycle-forward'プロシージャを再作成する必要があります。 –
私は、グローバル[turtle_index]とカメカウンターを使ってサイクルを設定しています。その結果、カメは一度に1つずつサイクルを通過します。私が望むのは、カメがサイクルを一周して、各カメがサイクルの異なる地点にくるようにすることです。今、1頭のカメは、次のカメがそのサイクルを通過するまでのサイクル全体を通って行きます。 – egur1