每当从海龟中拾取元素时,我都会更新列表中元素的计数器。为此,我要设置我感兴趣的项目,并将其添加1(计数器)。我创建了一个名为it_cnt
的全局变量,并将其设置为与创建对象的0
中的hatch
相等(以便最初知道哪个乌龟拥有该物品)。
这是我初始化计数器的位置:
ask buyers [
hatch-obj random 5 [
set it_cnt 0
]
]
请参阅下面我正在考虑的列表
let picked_obj (list item 0 obj_in_shop_bag item 1 obj_in_shop_bag item 2 obj_in_shop_bag item 3 obj_in_shop_bag)
我正在如下更新计数器
let new_id_cnt item 3 picked_obj + 1
添加1
,以防买方选择picked_obj
。但是,当我打印列表以查看是否可行时
print (word " ; " item 0 obj_in_shop_bag " ; " item 1 obj_in_shop_bag " ; " item 2 obj_in_shop_bag " ; " item 3 new_id_cnt)
如果该商品是在不同的价格中从不同的买家处两次提货的(价格在列表中为item 0
,则我得到的唯一值为1
,因为它已被重置。
电流输出示例:
; 1 ; (obj 18) ; (buyer 3) ; 1
; 2 ; (obj 18) ; (buyer 5) ; 1
但是我希望以下内容:
; 1 ; (obj 18) ; (buyer 3) ; 1
; 2 ; (obj 18) ; (buyer 5) ; 2
如果您能告诉我如何修复计数器以使其正常工作,我将不胜感激。
非常感谢。
这不是答案,但是评论太长。我无法理解这个问题。
您在set it_cnt 0
中有hatch
,但您说这是一个全局变量。因此,如果您有10个买家,则每个买家都会孵化0到4个obj,并且潜在的40个obj中的每一个将全局变量的单个副本设置为值0。为什么?您是说它是obj拥有的乌龟变量吗?
要更新计数器的位置,您突然将名称从it_cnt切换为new_id_cnt。这不会更新任何内容,这两个变量的值之间没有显示连接。