불쌍한 제목으로 인해 죄송하지만 문구를 더 잘 표현할 수있는 방법이 없었습니다 ...
그래서 거기에 닌텐도에 WiiPlay라고합니다 (예!) 닌텐도에 의해이 놀라운 게임 . 여기에는 9 개의 미니 게임이 있으며 내가 가장 좋아하는 게임은 탱크입니다! . 자신을 파괴하지 않고 COM 적 탱크를 파괴하는 것입니다. 레벨의 스크린 샷은 다음과 같습니다.
탱크를 파괴하는 한 가지 방법은 총알을 발사하는 것입니다. 이 라임 그린 적 탱크가 있으며 벽과 블록에 두 번 튀어 나오는 고속 총알을 발사합니다. 중앙의 석회 탱크가 이미지에 그려진 녹색 경로를 따라 총알을 발사 할 수 있으므로 플레이어 탱크가 현재 위치에 있으면 플레이어 탱크가 즉시 파괴되는 방법을 알 수 있습니다.
아마추어 프로그래머로서 저는 라임 탱크가 플레이어 탱크를 때리는 방향을 어떻게 결정할 수 있는지 궁금합니다.
나는 그것에 대해 스스로 생각했지만 가능한 알고리즘을 찾지 못했습니다. 그들이 누군가에게 영감을 주었을 때의 결론을 설명하겠습니다. 설명하는 동안 간단하게하기 위해 벽 은 총알이 튀어 나올 수 있는 표면 이라고 가정합니다 . 따라서 블록의 분리 된 사각형은 4 개의 벽을 형성합니다.
총알 리 코팅이 항상 평행 사변형의 한면에 놓여 있거나 평행 사변형의 반대 정점이된다는 결론을 내 렸습니다. 발사하는 적 탱크와 그것이 목표로하는 플레이어 탱크는 반드시 다른 2 개의 정점 일 필요는 없지만, 평행 사변형의 4면 중 어느 하나에 대해 동일 선상에 놓여 있습니다. 다음은 평행 사변형을 형성 할 수있는 4 가지 방법을 보여줍니다.
HOR-VER 은 총알이 먼저 수평 벽에 닿은 다음 수직 벽에 닿는 것을 의미합니다.
그리고 나는 붙어있다. 적 탱크와 플레이어 탱크를 연결하는 선을 움직여 벽에 두 번의 히트로 평행 사변형을 형성하는지 확인했지만 적 탱크와 플레이어 탱크가 그렇지 않기 때문에 항상 작동하지는 않습니다. 평행 사변형의 꼭짓점과 일치해야합니다.
또한 알고리즘의 일반적인 흐름을 잘 모르겠습니다. 알고리즘은 다음 두 가지 구조 중 하나를 사용합니까, 아니면 두 가지 모두 잘못되었을 수 있습니까?
- 가능한 경로를 파악하고 항상 최선의 경로로 표시하고 (여러 기준에 따라 가장 짧거나 가장 모호하며, 피할 수없는, 또는 종합적이고 가중 된 평가 일 수 있음) 나머지는 잊어 버리십시오. 모든 계산 후 남은 것이 가장 좋습니다.
- 먼저 총알로 도달 할 수있는 모든 벽을 확인한 다음 (각 벽에 도달하기 위해 총알이 다른 벽에 튀어 나올 필요는 없음) 각 벽에 도달 할 수있는 모든 범위를 결정합니다 (때로는 원거리에 도달 할 수 없음) 다른 벽이 근처에 있으면 리코 치가없는 벽), 다시 리코 치가있는 모든 도달 가능한 벽과이 벽에서 도달 할 수있는 모든 범위를 결정합니다. 이 4 가지 프로세스는 광선 추적과 유사한 방식으로 수행 할 수 있습니다. 각 과정에서 플레이어 탱크에 광선이 닿으면 광선에 따라 총알 경로를 알아냅니다.
제 생각에는이 알고리즘은 다음과 같은 이유로 알아 내기가 어렵습니다.
- 총알은 어떤 방향으로도 발사 될 수 있습니다. 과
- 수학에서와 같이 벽에 무한히 많은 점이 있으며, 선에는 무한히 많은 점이 있습니다.
그러나 닌텐도 사람들은 어쨌든 그것을 만들었습니다.