plot-manhattan-distance
手順で何をしようとしているのかわかりません。比較的単純であるべきものに対する複雑なアプローチのように思えますが、おそらく私はあなたの目的を誤解していました. 問題全体にアプローチする方法は次のとおりです。
globals [
zombie
human
]
to setup
clear-all
ask n-of 2 patches [ sprout 1 ]
set human turtle 0
ask human [ set shape "person" ]
set zombie turtle 1
ask zombie [ pen-down ]
end
to go
ask human [ flee zombie ]
ask zombie [ pursue human ]
end
to pursue [ target ]
face target
set heading first sort-by [abs (?1 - heading) < abs (?2 - heading)] [0 90 180 270]
fd 1
end
to flee [ pursuer ]
face pursuer
rt 180
fd 0.5
end
お肉はpursue
手順で。ゾンビは人間がどこに行こうとしているのかを予測できないため、一般的な方向に移動しようとしています。まず、人間に直接向き合うことから始めます (便利な NetLogoface
プリミティブを使用)。しかし、おそらく 4 つの基本方向の 1 つにしか移動できないため、最も望ましい方向、つまり現在の (理想的な) 方向との違いが最も少ない方向を選択する必要があります。これがsort-by [abs (?1 - heading) < abs (?2 - heading)] [0 90 180 270]
式の動作です。方向の絶対差を現在の進行方向と比較して、方向のリストを並べ替えます。この並べ替えられたリストの最初の項目は、差が最も小さい項目になるため、ゾンビが使用する必要がある項目になります。
現在の実装では、人間はゾンビから離れようとしますが、これをプレイヤー コントロール コードに簡単に置き換えることができます。