0

なんらかの形の AI をネット ロゴ ゲームに実装しようとしています。

ゾンビのカメから人間のカメまでのマンハッタン距離を計算する予定です。

これまでのところ、2 つの距離からマンハッタンの距離を計算し、パスを描画し、計算されたパスに沿ってゾンビ エージェントを人間のカメに向かって移動させることができました。

私が今直面している問題は、人間のエージェントの場所がユーザーによって制御されることです。マンハッタン距離は while ループを使用し、人間のエージェントに到達するまでループから抜け出しません。ゾンビ エージェントが人間のエージェントに向かって 1 歩移動してから、人間のエージェントを移動させたいと思います。

これまでのコードNet Logo Game

4

1 に答える 1

0

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]式の動作です。方向の絶対差を現在の進行方向と比較して、方向のリストを並べ替えます。この並べ替えられたリストの最初の項目は、差が最も小さい項目になるため、ゾンビが使用する必要がある項目になります。

現在の実装では、人間はゾンビから離れようとしますが、これをプレイヤー コントロール コードに簡単に置き換えることができます。

于 2012-12-14T17:59:50.043 に答える