让海龟根据它们在列表中的排名顺序移动一次
Make turtles move ONCE according to their ranked order in a list
这个问题是在我之前的 2 个问题的基础上建立的。我一直在努力为我的海龟获得一个排名列表,按拥有的因素排名。然后他们需要按排名顺序移动。该部分工作得很好,代码可以在以下位置找到:
问题:使用该代码,它们以正确的顺序移动,但不是移动一次,程序似乎不断地为列表中的每只海龟重新运行它,所以第一只海龟在 10 人的世界中,最终移动 10 次,第二个移动 9 次,依此类推
我完全被这个难住了,但我需要它停止。他们应该移动一次并在那个滴答声中完成。想法?
列表创建代码为:
let rank-list sort-on [sociability] turtles
let ranks n-values length rank-list [ ? ]
(foreach rank-list ranks [ask ?1 [set social_rank ?2] ] )
;;you can replicate the problem with this movement proc, or the full code in the link above
ask turtles [foreach rank-list [ask ? [set heading 270 forward 1]]]
行中:
ask turtles [foreach rank-list [ask ? [set heading 270 forward 1]]]
你要求每只乌龟为你rank-list
中的每只乌龟执行命令。
只需删除 ask turtles
部分。
作为更一般的注释:foreach
是列出什么 ask
是代理集。它们都做同样的基本事情,即对 "collection" 的每一项执行一条命令。代理集是唯一代理的无序集合。列表是任何类型的可能重复项的有序集合。
这个问题是在我之前的 2 个问题的基础上建立的。我一直在努力为我的海龟获得一个排名列表,按拥有的因素排名。然后他们需要按排名顺序移动。该部分工作得很好,代码可以在以下位置找到:
问题:使用该代码,它们以正确的顺序移动,但不是移动一次,程序似乎不断地为列表中的每只海龟重新运行它,所以第一只海龟在 10 人的世界中,最终移动 10 次,第二个移动 9 次,依此类推
我完全被这个难住了,但我需要它停止。他们应该移动一次并在那个滴答声中完成。想法?
列表创建代码为:
let rank-list sort-on [sociability] turtles
let ranks n-values length rank-list [ ? ]
(foreach rank-list ranks [ask ?1 [set social_rank ?2] ] )
;;you can replicate the problem with this movement proc, or the full code in the link above
ask turtles [foreach rank-list [ask ? [set heading 270 forward 1]]]
行中:
ask turtles [foreach rank-list [ask ? [set heading 270 forward 1]]]
你要求每只乌龟为你rank-list
中的每只乌龟执行命令。
只需删除 ask turtles
部分。
作为更一般的注释:foreach
是列出什么 ask
是代理集。它们都做同样的基本事情,即对 "collection" 的每一项执行一条命令。代理集是唯一代理的无序集合。列表是任何类型的可能重复项的有序集合。