Представьте: плоский мир n*n клеток. Есть движущиеся объекты. Они могут столкнуться, и согласно процессу один из них должен быть уничтожен.
Я использую идеи из муравьиной колонии Рича Хикки для представления объектов как агентов. Таким образом, после столкновения один из агентов должен прекратить свою работу после получения сообщения от другого агента.
Вот фрагмент кода, иллюстрирующий мою проблему: второй агент неожиданно останавливается.
;agents
(def f_guy (agent nil))
(def s_guy (agent nil))
;functions for agents
(defn f_do [x]
(do
(Thread/sleep 20)
(println "f")
(send-off *agent* f_do)))
(defn s_do [x]
(do
(Thread/sleep 40)
(println "s")
(send-off f_guy nil)
(send-off *agent* s_do)))
;the process
(defn start []
(do
(send-off f_guy f_do)
(send-off s_guy s_do)))
;go
(start)
Спасибо!