2012-01-22 3 views
0

저는 파이썬으로 작은 게임을 개발 중입니다. 2D 사각형 격자를 사용하고 있습니다. 나는 길 찾기를 위해 A *와 같은 것을 사용할 수 있음을 알고 있습니다. 어떻게 작동하는지 알고 있지만, 가지고있는 문제는 조금 다릅니다.2D 그리드에서 물체를 멀리하십시오

우리는 컴퓨터로 제어되는 인간과 컴퓨터로 제어되는 좀비가 있다고 가정 해 봅시다. 인간이 좀비를 발견하면 최대한 멀리에서 벗어나야합니다. 지금은 모든 것을 테스트하기 위해 180 ° 회전하고 도망 가며 또 다른 좀비를 발견하고 반복합니다.

분명히 이것은 현명하지 못합니다 (양쪽에 좀비가 있으면 문제가 발생할 수 있음).

더 똑똑한 방법이 있는지 궁금합니다. 다이크 스트라 (Dijkstra)를 사용하여 내가 달릴 수있는 "안전 지대"를 찾는 것과 같은 것이 있습니까? 대안은 항상 환영 받는다. 나는 그것을 이해하는 것처럼 보일 수 없다.

답변

1

좀비는 특정 범위 (반경 또는 더 영리한) 내 모든 것을 볼 수 있고 좀비가 볼 수 없다고 생각하는 지점을 사람이 볼 수 있다고 가정 할 수 있습니다. 좀비가 볼 수없는 가장 가까운 지점을 선택하고 A * 알고리즘을 사용하여 경로를 찾은 다음 다른 경로를 찾으십시오. 실행할 곳이 없을 때 조심하십시오. 또는 그 위치를 선택한 경우 좀비로부터 얼마나 멀어 졌는지에 따라 가시성 영역의 모든 영역에 가중치를 부여 할 수 있습니다.

+0

나는 이와 같은 것을 시도 할 것입니다. 좀비의 거리와 존재 여부에 따라 인간의 주위에있는 특정 반경의 모든 세포에 점수를 부여 할 것입니다. 그렇다면 나는 가장 낮은 점수를 가진 세포에 바람처럼 달릴 것이다. 그것이 당신이 마지막 문장에서 말한 것이기 때문에 당신의 답을 옳은 것으로 표시 할 것입니다. – KWyckmans

+1

첫 번째 옵션은 두 번째 옵션에서 찾을 수없는 몇 가지 흥미로운 시나리오를 허용합니다. 좀비가 앞으로 나아갈 단계 만 볼 수 있다는 것을 안다면, 당신의 인간은 잠재적으로 좀비 옆에있는 벽 뒤에 숨어있을 수 있습니다. 두 번째 옵션은 얼마나 많은 좀비가 근처에 있는지를 기반으로 가장 안전한 지점에 도달하려고 시도합니다. 처음에는 그다지 정교하지 않지만 좀비의 인공 지능이 어떻게 작동하는지에 따라 더 나은 옵션이 될 수 있습니다. –

+0

좀 더 정교 해지기 위해 그렇게 할 수도 있지만, 처음에는 기본적인 것을 시도해 볼 것입니다. – KWyckmans

0

그냥 내 머리 꼭대기에서 떨어져서, 당신은 아마 몇 가지 벡터 수학을 할 수 있고 인간은 좀비에 대한 정상적인 벡터에서 실행할 수 있습니다.

나는이 일을 얼마나 잘 (또는 당신이 좀비의 수를 확장하는 방법),하지만 당신은 같은 것을 할 수 모른다 : 각 좀비를 들어

  • 를, 거리를 계산 인간의 방향이며 인간의 방향입니다.

  • 거리와 방향의 역행렬을 사용하여 각 좀비 (또는 좀비의 일부 하위 집합)에 대한 벡터를 만듭니다. 왜냐하면 좀비가 가까울수록 멀리 떨어져 나가는 것이 더 중요하기 때문입니다.

  • 모든 벡터의 합계를 구하십시오.

  • 인간을 결과의 법선 벡터로 실행하십시오.

리소스 집약도는 확실하지 않지만 실행할 위치를 우선 순위 지정하는 가장 논리적 인 방법 인 것 같습니다.

+0

흠, 그래,이게 어떻게 작동하는지 알 수 있겠지만 먼저 간단한 해결책을 시도해 보겠다. – KWyckmans