Я создаю игру, в которой я пытаюсь использовать линейный алгоритм Брешенема (http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm), чтобы враги преследовали игрока на двумерной карте. Концепция игры аналогична концепции, описанной ниже. Псевдокод ниже от http://herselfsai.com/2007/07/simple-predator-prey-chase-algorithms.htmlПростая игра с движением Chase с использованием алгоритма линии 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 –
@Mitch, я натолкнулся на алгоритм с сайта, указанного выше. Я ищу использовать алгоритм, поскольку он относится к вышеуказанному коду с указанного веб-сайта, но у меня есть чувство, что код некорректен. Если есть лучший алгоритм, я открыт для изменения кода. Благодарю. – user580777
Я, возможно, ошибочно вижу гвоздь здесь, но вы считали, что используете Алгоритм A *? http://en.wikipedia.org/wiki/A_star –