Netlogo 创建新对象时更改颜色
当选择品种A的代理时,它将创建一个新对象。我需要将此对象添加到其列表(Netlogo 创建新对象时更改颜色,netlogo,Netlogo,当选择品种A的代理时,它将创建一个新对象。我需要将此对象添加到其列表(议程)和邻居列表中。如果我在下面的代码中没有犯错误,我会问你如何将颜色更改为代理而不是对象 谢谢 breed[objects object] objects-own[att_1] breed [A aa] A-own[ my-object agenda ] to setup create-A 10 ask A[ set agenda [] ] end to go [ ask one-of
议程
)和邻居列表中。如果我在下面的代码中没有犯错误,我会问你如何将颜色更改为代理而不是对象
谢谢
breed[objects object]
objects-own[att_1]
breed [A aa]
A-own[
my-object
agenda
]
to setup
create-A 10
ask A[
set agenda []
]
end
to go
[
ask one-of A[create-obj]
]
end
to create-object
create-object 1[
if breed = A
[set color red] ; I want to assign this colour to A, not to the object
hide-turtle
set att_1 random-float 1
let this-object myself
if (condition 1)
[ let customers (turtle-set self in-link-neighbors with [breed = A])
ask customers
[
set agenda fput this-object agenda
]
]
]
end
将
如果品种=A[设置红色]
替换为如果品种=A[问我自己[设置红色]]
。这样行吗
关键词
我自己
指的是做询问的人,而不是执行要求它做的命令的乌龟。如果我理解你试图实现的目标,我认为解决方案可以简单到:
to go
ask one-of A [
set color red
create-obj
]
end
通常,您几乎不需要使用
if-breed=…
模式。如果你发现自己在这样做,那么你很可能是以错误的方式处理问题,而且通常是没有办法实现你想要的。(当然,欢迎您在这里询问。)谢谢您的回答。我自己也没有这么频繁地使用关键字。我能问一下,使用“让这个对象自己”和“设置议程”F是否正确吗?使用“让这个对象”
让代理A
将创建的对象放入议程(A的议程)?对不起,我不明白这个问题。尝试一下,看看会发生什么。我尝试过,但因为创建对象
(我不得不问一个新问题,因为这个问题与此问题无关)而收到一条错误消息。因此,我无法检查它是否有效。使用if bread=A[问我自己[set color red]]
内部创建对象
将永远不会做任何事情,因为海龟的品种永远是对象
,永远不会A
。答案应该是问我自己[设置红色]。