2015-07-18 128 views

回答

3

最简单的方法:

ask (patch-set patch 1 1 patch 1 -1 patch -1 1 patch -1 -1) [ set pcolor grey ] 

(以下如果这是从观察者(即,它不被任何代理人都跑已响应赛斯的评论:)

更新),可以使用at-points像这样:

ask patches at-points [[1 1] [1 -1] [-1 1] [-1 -1]] [ set pcolor grey ] 

然而,如果这个代码是由龟或补丁程序运行,坐标表将被相对于治疗剂。所以patches at-points [[1 0] [0 1]]会在右侧给出补丁,并在当前代理上面给出补丁。您可以轻松地使用绝对坐标的版本:

to-report patches-at-coords [ coordinates ] 
    report (patch-set map [patch first ? last ?] coordinates) 
end 

,然后用它像这样:

ask patches-at-coords [[1 1] [1 -1] [-1 1] [-1 -1]] [ set pcolor grey ] 

无论如何,除非你做这个有很多,我会与第一去方法。

+0

这里的命名对我来说似乎有点混乱,因为'patch-at'使用相对坐标,但是您的过程使用绝对坐标。请注意,您的过程的相对坐标版本已经存在;它被称为'at-points'。 –