我是新手,Netlogo和stackoverflow,但你的其他帖子已經幫了我很多。如何讓海龜面對面,等待3滴,然後繼續流浪?
我目前正在嘗試編寫一個模型,其中代理隨機漫步一個空間,並讓它們在遇到時停下來。這裏的「會議」是指「相互傳遞in-radius 2
」。他們應該互相對等,等待2個滴答聲,然後繼續移動,直到他們找到下一個代理。
我試圖用NzHelen's question on a timer,但並沒有真正成功。
到目前爲止,我設法讓他們面對面。我無法將tick
命令放在我的代碼中的正確位置。 (編輯:通過取出wait
-命令解決了這個問題,感謝Seth。 - >我不希望所有的龜都停止移動,但只有那些相互碰到的龜)。 我正在努力的另一件事是他們會面的某種視覺表現形式,比如他們見面的時候會有補丁閃爍,或者他們見面時會出現一個圈出現在他們周圍的圈子。使用wait
命令,一切都會再次停止,這是我想要阻止的。
下面的代碼到目前爲止。
to go
tick
ask turtles
[
wander
find-neighbourhood
]
ask turtles with [found-neighbour = "yes"]
[
face-each-other
]
ask turtles with [found-neighbour = "no" or found-neighbour = "unknown"]
[ wander ]
end
;-------
;Go commands
to wander
right random 50
left random 50
forward 1
end
to find-neighbourhood
set neighbourhood other turtles in-radius 2
if neighbourhood != nobody [wander]
find-nearest-neighbour
end
to find-nearest-neighbour
set nearest-neighbour one-of neighbourhood with-min [distance myself]
ifelse nearest-neighbour != nobody [set found-neighbour "yes"][set found-neighbour "no"]
end
to face-each-other ;;neighbour-procedure
face nearest-neighbour
set found-neighbour "no"
ask patch-here [ ;; patch-procedure
set pcolor red + 2
;wait 0.2
set pcolor grey + 2
]
if nearest-neighbour != nobody [wander]
rt 180
jump 2
ask nearest-neighbour
[
face myself
rt 180
jump 2
set found-neighbour "no"
]
end
當它裏面有一堆註釋掉的代碼和縮進遍佈整個地方時,讀代碼真的很難。這可能就是爲什麼沒有人試圖回答這個問題 - 這是很多代碼閱讀,你不是很容易。 –
跳到我身上的一件事就是你絕對不想使用'wait'。當一隻烏龜「等待」時,一切都會停止。 –
這些都是非常有用的意見,非常感謝。我試圖相應地編輯它。 –