私はBresenhamのラインアルゴリズム(http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm)を使用してプレイヤーを追いかけようとしているゲームを作成しています2Dマップ上に表示されます。ゲームのコンセプトは以下のようなものです。擬似コードは以下のマップの周りにプレイヤーが、0で、それのエーテル、45、90、など度の角度ではなく直線を追跡http://herselfsai.com/2007/07/simple-predator-prey-chase-algorithms.htmlBresenhamのラインアルゴリズムを使用したシンプルチェースゲームの動き
prey current position (xp, yp)
predator current position (xP, yP)
x = x position to move to
y = y position to move to
dx = xp – xP
dy = yp – yP
Adx = AbsoluteValue (dx)
Ady = AbsoluteValue (dy)
if (xp > xP) stepX = 1 else stepX = -1
if (yp > yP) stepY = 1 else stepY = -1
if (Ady > Adx){ //the y distance from prey is larger than the x distance
fraction = 2*dx – dy;
if ((yP != yp) && (fraction > 0)){
x += stepX
}
y += stepY
}else{
fraction = 2*dy – dx;
if ((xP != xp) && (fraction > 0)){
y += stepY
}
x += stepX
}
敵からです。また、私のコードでは、敵はランダムなスピード(0と5の間)も持ち、時にはプレイヤーを撮影し過ぎてから、何度も何度も訂正してやり直しています。それは別の問題かもしれません。
アルゴリズムの概念を完全に把握していないことは間違いありません。これを実装する正しい方法は何ですか?
ありがとうございます。
「アルゴリズムの概念を完全には理解していないのは間違いない」と述べていますので、どのような基準でアルゴリズムを使用することにしましたか? Bresenham線アルゴリズムは、2つの所与の点の間の直線に対する近似近似を形成するために、n次元ラスタのどの点をプロットすべきかを決定する。 http://en.wikipedia.org/wiki/Bresenham's_line_algorithm –
@Mitch、私は上記のウェブサイトからアルゴリズムを見つけました。私はそれが上記のWebサイトからのコードに関係するので、アルゴリズムを使用するために探しているが、私はコードが何らかの方法で欠陥があると感じている。より良いアルゴリズムがあれば、コードを変更することができます。ありがとう。 – user580777
私はここで釘を間違って見ているかもしれませんが、A *アルゴリズムの使用を検討しましたか? http://en.wikipedia.org/wiki/A_star –