나는 체스 게임을 만들고 있는데, 사실 한 가지만 빼면 모든 것을 얻었습니다. 플레이어가 조각을 수표로 옮길 수 없도록해야합니다. 이 문제를 해결하는 방법에 문제가 있습니다.체스 : 모든 체스 이동 이동하기
내가 유효한 움직임을 생성하기 위해 의사에 지금있는 것은 : 이 위치가 경계에있는 경우,이 위치에 조각 : 클래스 getMoveLocations (나는 체스에서 그 사각형 중 하나가 될 위치를 정의) 적의 이동량과 시뮬레이션 된 이동으로 인해 보드가 점검되지는 않습니다. 그런 다음이 위치를 조각이 이동할 수있는 위치에 추가하십시오.
이 문제는 체스 판이 "점검 중"인지 확인하는 방법입니다. 내 코드에서 체스 판은 모든 적의 이동 위치를 수집하고 적의 이동 위치 중 하나가 왕의 위치와 겹치는지를 보면서 "점검"상태에있는 것으로 간주합니다.
불행히도 여기가 무한 루프가 시작되는 지점입니다. 모든 적의 영화 위치를 모으기 위해, 적의 가능한 이동 위치는 이동으로 인해 체크가되지 않도록해야합니다. 적의 위치가 확인되지 않도록 모든 동맹군의 잠재적 이동 위치 등을 수집해야합니다.
작동 알고리즘을 얻는 방법에 난처한 입장입니다. "이론적으로"필자의 코드는 논리적으로 의미가 있지만 구현할 수는 없습니다. 나는 A) 모든 법적 움직임을 검사하는 방법을 구현하는보다 효율적인 방법 또는 B)이 무한 루프를 해결하는 방법
체크를 만드는 동작 (유효성을 확인)에 대해서만 재귀 부분을 실행할 수 있지만 다른 동작에는 사용할 수 없습니다 (유효하지 않은 경우 중요하지 않음). 그것은 무한 재귀를 방지해야합니다. – assylias
getMoveLocations라는 클래스를 만들었습니까? – joshreesjones
당신은 가능한 움직임을 찾고 있습니다 "상대방이 여기로 이동하면 상대방이 거기로 움직이면 상대방이 움직 인 후에 거기로 이동하면 ..... 내가 점검 할 것입니까?" 벽에 대해 튀는 공을 가지고 있고 공이 플레이어에 의해 제어 가능한 게임을 만들었다 고 가정하면 벽과의 충돌로 이어지지 않는 N 개의 경로로 그의 움직임을 제한하지 않을 것입니다 (거대한 검색), 당신은 그를 어느 한 방향으로 움직이지 않는다. 그는 벽과 충돌한다. 마찬가지로 움직일 때 수표에 넣을 수 있는지 확인하십시오. 조각으로 가능한 모든 동작을 고려하지 않습니다. (거대한 검색) – arynaq