이것은 그림이 없으면 설명하기가 다소 어려울 수 있지만, 왕이 확인되었는지 확인하는 과정에 있습니다. 그렇게하기 위해, 저는 왕의 위치에서 시작하여 왼쪽, 아래, 오른쪽, 모든 대각선 패턴으로갑니다.체스, 대각선으로 움직이는 마지막 위치를 찾는 알고리즘
코드를 단순화하기 위해 시작 위치와 끝 위치를 가져 와서 경로에 왕에게 위협이되는 경우 true를 반환하는 경로 검사기 메서드가 있습니다. 그래서, 내가 좋아하는이 메서드를 호출하고이 상단 행, 같은 열에 왕에서 확인 할
board.incheckPath(kingLocation, new Location(8, kingY))
. 왼쪽, 아래 및 오른쪽에 대해서도 비슷한 내용의 문장이 있습니다.
문제는 대각선 패턴에 대해 똑같은 방식을 사용하려고 시도하고 있으며 마지막 위치가 어디인지 파악하기위한 간단한 알고리즘을 이해할 수 없다는 것입니다. 만약 당신이 오른쪽보다 높으면, 당신이 오른쪽 위, 오른쪽으로 대각선으로 올라간다면 가장 오른쪽 칸을 누르기 전에 맨 윗줄을 칠 것입니다. 내가 그 위치에 대한 알고리즘을 알아 낸 것입니다 :
if x > y { row = 8; column = 8-(x-y) } else { row = 8-(x-y); column = 8; }
당신은 상단 행 또는 오른쪽 열 중 하나에서 멀리 x와 y 사이의 차이가 될 것입니다 착륙 어디 때문입니다. 그러나 나는 그 결과가 올라가고 내려갈 때, 왼쪽으로 내려갈 때, 아래로 갈 때, 그리고 오른쪽으로 갈 때 그 결과가 무엇인지 알 수 없다.
"마지막"위치를 의미합니까? – cammil
왼쪽에서 오른쪽으로, 왼쪽에서 아래로, 오른쪽에서 위로, 그리고 아래에서 아래로, 네가 갈 때 왕에게 대각선 방향으로 다가갑니다. 나는 이미 마지막 지점이 오른쪽 위로 움직일 때 무엇인지 알아 냈다. –
마지막으로, 이사회를 떠나기 전에 마지막으로.따라서 위치 검사기가 위치 X에 도달 할 때까지 검사 할 방법을 알려줄 수 있습니다. –