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 's Line Algorithm을 사용한 간단한 체이스 게임 이동
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 선 알고리즘은 주어진 두 점 사이의 직선에 가까운 근사를 형성하기 위해 n 차원 래스터의 점을 플롯해야 하는지를 결정합니다. http://en.wikipedia.org/wiki/Bresenham's_line_algorithm –
@Mitch, 위에서 언급 한 웹 사이트에서 알고리즘을 발견했습니다. 위의 코드에서 설명한 웹 사이트에서 알고리즘을 사용하려고하지만 코드가 어떤 식 으로든 결함이 있다고 생각합니다. 더 나은 알고리즘이 있다면, 나는 코드를 변경하는 데 열중하고있다. 감사. – user580777
여기서 못을 잘못 본 것 같지만 A * 알고리즘 사용을 고려해 보셨습니까? http://en.wikipedia.org/wiki/A_star –