2017-03-23 19 views
0

나는 플레이어가 게임 보드에 경로를 그리고 게임의 내부 타일이 경로를 닫을 때 (JavaFX에서) 게임을 작업 해왔다. 통제 지역.그리드 셀이 닫힌 셀 경계에 있는지 확인하는 방법

나는 거의 작동하는 을 보았습니다. 문제의 지점 오른쪽에있는 타일을 반복하고 경계선의 일부인 일련의 타일에 얼마나 많은 시간을 입력하는지 계산합니다. 홀수 인 경우에는 내부에 있습니다 (1이 특별한 경우 임).

아래 그림에서 포인트 P1과 P2가 문제입니다. 오른쪽으로 계산하면 둘 다 동일한 개수가되지만 하나는 내부에 있고 다른 하나는 동봉 된 영역 밖에 있습니다. 나는이 특별한 경우를 정의하는 방법을 알 수 없다.

모든 의견이나 생각을 환영합니다. 첫 번째 의견에 대한 응답으로 편집

enter image description here

:/아래 및/또는 왼쪽/오른쪽 작동하지 않을 수 있습니다 결정을 할 양쪽에 포인트를 위해 위의 찾고 방법이 예를 보여줍니다.

enter image description here

+0

왜 수직으로 점을 확인하지 않는 이유는 타일이 위와 아래에 모두 있는지 확인하는 것입니다. 이 방법을 사용하면 위 또는 아래의 타일 수에 대해 걱정할 필요가 없습니다. – saikumarm

+1

내 질문을 편집하여 위/아래 및/또는 왼쪽/오른쪽을 찾지 못하는 예제를 추가했습니다. 생각해 줘서 고마워. –

답변

1

나는 경계 셀에 앉아 포인트 을 고려하지 않습니다. 그러한 점이 영역의 내부 또는 외부로 간주되는지를 정의해야합니다.

알고리즘 :

  1. 가장 작은 사각형 R 영역을 둘러싸는하지만 지역 어떠한 세포를 공유하지를 결정합니다.
  2. P 지점을 표시하여 범위 안팎에 있는지 확인하십시오 (unvisited).
  3. unvisited으로 표시된 셀이 없으면 P이 영역 안에 있습니다.
  4. unvisited으로 표시된 임의의 셀 C을 선택하고 visited으로 표시합니다.
  5. 셀이 C 인 경우 테두리 셀이 R 인 경우 P이 영역 외부에 있습니다.
  6. unvisited 또는 visited으로 표시되지 않거나 해당 영역의 경계 셀인 C (위쪽, 아래쪽, 왼쪽, 오른쪽)의 모든 주변 셀을 선택하고 unvisited으로 표시합니다. 포인트 P는 영역 밖에 본 실시 예에서는

    Point outside area

    :

  7. 3.

예 1 계속. 이것은 녹색으로 렌더링 된 셀의 알고리즘 5.에 의해 탐지됩니다.

예 2 점 P는 지역 내에있는 이러한 예에서

Point inside area

. 남은 두 개의 방문하지 않은 셀을 계속 사용하려면 알고리즘 3.에 의해 감지됩니다.

실시 예 3 : 점 P는 영역 밖에 본 실시 예에서는

Point outside area

. 이것은 녹색으로 렌더링 된 셀의 알고리즘 5.에 의해 감지됩니다.

+0

좋은 접근 방식인데 응답 시간을내어 주셔서 감사합니다. 그것은 간단하고 내 요구에 충분히 효율적이어야합니다. 감사합니다. 코드를 작성하고 테스트하십시오. –