2011-01-19 4 views
0

私は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の間)も持ち、時にはプレイヤーを撮影し過ぎてから、何度も何度も訂正してやり直しています。それは別の問題かもしれません。

アルゴリズムの概念を完全に把握していないことは間違いありません。これを実装する正しい方法は何ですか?

ありがとうございます。

+0

「アルゴリズムの概念を完全には理解していないのは間違いない」と述べていますので、どのような基準でアルゴリズムを使用することにしましたか? Bresenham線アルゴリズムは、2つの所与の点の間の直線に対する近似近似を形成するために、n次元ラスタのどの点をプロットすべきかを決定する。 http://en.wikipedia.org/wiki/Bresenham's_line_algorithm –

+0

@Mitch、私は上記のウェブサイトからアルゴリズムを見つけました。私はそれが上記のWebサイトからのコードに関係するので、アルゴリズムを使用するために探しているが、私はコードが何らかの方法で欠陥があると感じている。より良いアルゴリズムがあれば、コードを変更することができます。ありがとう。 – user580777

+0

私はここで釘を間違って見ているかもしれませんが、A *アルゴリズムの使用を検討しましたか? http://en.wikipedia.org/wiki/A_star –

答えて

0

Bresenham's Line Algorithmは、目に最も近いルートを通って文字を直線に移動させるアルゴリズムを簡単に理解して計算しやすいアルゴリズムです。

このアルゴリズムは、45度のコストが90度または0度と同じ場合、あなたのケースで機能します。さもなければBresenhamが取るルートは最も速くないでしょう。

関連する問題