将代码从补丁转换为观察者上下文的一般规则是什么?
例如,如果我有这样的代码,我应该如何修改它以将按钮从补丁转换为观察者上下文?
if numRed <= numYellow [set pcolor red]
if numYellow < numRed [set pcolor yellow]
if numGreen < numBlue [set pcolor green]
答案 0 :(得分:2)
没有一般规则。但是,更改上下文的最常见方法是使用原始ask
。看这段代码:
to testme
ask n-of 10 patches
[ set pcolor red
]
end
该过程在观察者上下文中。也就是说,它是从局外人看模型的角度编写的。然后ask
随机选择10个色块。代码切换了透视图(在方括号中),并假装它是那些随机选择的补丁中的第一个。该补丁将其颜色(pcolor
)设置为红色。然后,透视图切换到第二个随机选择的面片。它还考虑改变颜色。代码在这10个补丁中运行时,它处于补丁上下文中。右方括号结束了代码块,同时结束了补丁上下文并跳回到了观察者上下文。
如果您的代码在修补程序上下文(或链接上下文或乌龟上下文)中,则必须告诉它要将代码应用到哪些补丁程序(或链接或乌龟)。默认为全部。试试这个:
set pcolor red
按下按钮,所有色块将变成红色。
我认为NetLogo的初学者应该从观察者上下文编写每个过程。这意味着所有有关补丁和乌龟的命令都包含在清晰的ask <agentset> [ <do something > ]
结构中。您可以更轻松地跟踪自己在做什么以及哪些模型实体在做什么。