0
我創建了一個遊戲,我試圖用Bresenham的線算法(http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm)讓敵人追逐玩家在2D地圖上。遊戲的概念與下面的概念類似。下面的僞代碼是從http://herselfsai.com/2007/07/simple-predator-prey-chase-algorithms.html使用Bresenham線算法的簡單追逐遊戲運動
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醚,45,90等度角,而不是直線。此外,在我的編碼中,敵人也有隨機速度(0到5之間),有時會過度拍攝玩家,然後嘗試糾正和反覆拍攝。這可能是一個單獨的問題。
我當然沒有完全理解算法的概念。什麼是實施這個的正確方法?
在此先感謝。
你說「我確定只是沒有完全理解算法的概念」 - 所以你決定在什麼基礎上使用算法? Bresenham線算法確定應繪製n維柵格中的哪些點以形成兩個給定點之間的直線的緊密近似。 http://en.wikipedia.org/wiki/Bresenham's_line_algorithm – 2011-01-19 01:52:36