如何根据此图像使用邻居函数立即报告位于每只乌龟周围的所有补丁?
请注意,在下面详述的示例中,行和列从世界的左上角开始。因此,(1,1)是左上角的补丁索引。
假设乌龟A(图像中的红叉)位于补丁x0 y0处,此乌龟周围的邻近补丁将是:
%%%方向1:左上角的补丁
show patch (x0 – 2):(x0 – 1) (y0 – 2):(y0 – 1)
返回带坐标(1,1),(1,2),(2,1),(2,2)的补丁
%%%方向2:中上角的补丁
show patch (x0 – 2):(x0 – 1) (y0 – 1):(y0 +1)
返回带坐标(1,2),(1,3),(1,4),(2,2),(2,3),(2,4)的补丁
%%%方向3:右上角的补丁
show patch (x0 – 2):(x0 – 1) (y0 + 1):(y0 + 2)
以坐标(1,4),(1,5),(2,4),(2,5)返回补丁
%%%方向4:左角的补丁
show patch (x0 – 1):(x0 + 1) (y0 – 2):(y0 – 1)
返回带坐标(2,1),(2,2),(3,1),(3,2),(4,1),(4,2)的补丁
%%%方向5:右上角的补丁
show patch (x0 – 1):(x0 + 1) (y0 + 1):(y0 + 2)
以坐标(2,4),(2,5),(3,4),(3,5),(4,4),(4,5)返回补丁
%%%方向6:左下角的补丁
show patch (x0 + 1):(x0 + 2) (y0 - 2):(y0 - 1)
返回带坐标(4,1),(4,2),(5,1),(5,2)的补丁
%%%方向7:底部中间角的补丁
show patch (x0 + 1):(x0 + 2) (y0 - 1):(y0 + 1)
返回带坐标(4,2),(4,3),(4,4),(5,2),(5,3),(5,4)的补丁
%%%方向8:右下角的补丁
show patch (x0 + 1):(x0 + 2) (y0 + 1):(y0 + 2)
返回带坐标(4,4),(4,5),(5,4),(5,5)的补丁
答案 0 :(得分:1)
你可以围绕patch-at
:
to setup
clear-all
create-turtles 1 [ setxy 3 3 ]
ask turtles [
show patches-at [[-2 0] [-1 0] [0 -2] [0 -1]]
]
end
to-report patches-at [ list-of-xy-pairs ]
report patch-set map get-patch-at list-of-xy-pairs
end
to-report get-patch-at [ xy-pair ]
report patch-at first xy-pair last xy-pair
end