Я создаю игру, в которой я пытаюсь использовать линейный алгоритм Брезенхэма (http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm), чтобы враги преследовали игрока на 2D-карте. Концепция игры похожа на приведенную ниже. Ниже приведен псевдокод от http://herselfsai.com/2007/07/simple-predator-prey-chase-algorithms.html
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) и иногда перестреливают игрока, затем пытаются исправить и перестрелять снова и снова. Это может быть отдельной проблемой.
Я уверен, что не совсем понял концепцию алгоритма. Как правильно это реализовать?
Заранее спасибо.