给定:将force-x和force-y分别视为代理上的x和y分力
目标:你希望乌龟根据force-x和force-y(普通机制)移动8个相邻补丁中的一个
要求:最少的if-else语句代码。
答案 0 :(得分:1)
如果你确定你的力量不足以将乌龟推过邻近的一个补丁,你可以简单地使用move-to
和patch-at
,然后让你的乌龟:
move-to patch-at force-x force-y
但也许你的力量大于此,你仍然想限制可能的移动到邻居。然后,您可以使用min-one-of
和distance
的组合来实现:
let p patch-at force-x force-y
move-to min-one-of neighbors [ distance p ]
但话又说回来,也许你也想知道这些力量不足以将乌龟推到邻居的可能性。如果是这种情况,您可以使用patch-set
将当前补丁(由patch-here
给出)添加到可能的目的地集合中:
let p patch-at force-x force-y
move-to min-one-of (patch-set patch-here neighbors) [ distance p ]