2011-10-05 5 views
0

극단적 인 깊이 관리와 관련하여 프로젝트를 구하는 데 도움이 필요합니다. 우리는 아이디어가 없어!MC 위치를 기준으로 복잡한 깊이 정렬 문제

프로젝트는 다양한 크기의 상자를 쌓아 놓는 것과 관련이 있습니다. 각 상자는 등각 투영입니다. 즉, 깊이가 재생되는 곳 (이 상자를 상자 앞면에 꿰맬 필요가 있지만 상자 두 개, 등 - 아무것도 간다)는 의미로 여기

프로젝트입니다 :

http://clearlytrained.com/depth/

당신은 그리드 공간이 녹색 인 경우 상자가 다음 격자를 통해 가자 드래그 할 수 있습니다 - 당신이 걸릴 것 인 경우에! 하나의 그리드 공간이 높은 두 개의 상자, 서로 옆에 놓인 다음 더 넓은 상자 (2x2)를 가져 와서 b 위에 놓습니다 oth (두 개의 하단 상자에있는 간격이 위에 놓인 상자의 가운데에 있으므로) 맨 오른쪽 상자의 깊이가 이제 상자 위쪽과 위쪽에있는 것을 볼 수 있습니다. 나는 completley가 왜 이런 일이 일어나는지를 이해합니다. 그러나 우리가 어떻게 그리드를 순서대로 스윕하는지에 관계없이, 이것은 현재의 상황에서 어느 정도 발생합니다.

우리는 현재 깊이를 정렬하는 방식으로 그리드 배열을 스윕합니다. 그리드 배열은 화면의 모든 상자 이름을 저장하며, 행과 열을 스윕하는 방향에 따라 우리가 설정합니다 각 상자의 깊이. 문제는 상자가 6 개의 격자 공간을 차지할지라도 깊이를 6 번 설정하지 않는다는 것입니다. 배열에서 처음으로 인스턴스 이름을 지정할 때만 설정합니다. 그래서 우리가 그리드 맨 아래, 맨 위, 왼쪽에서 오른쪽, 물리적으로 다른 상자 아래에있는 상자, 그러나 오른쪽으로 더 먼 곳에 항상 더 높은 깊이가 있습니다. 안좋다!

이 문제를 해결하기 위해 볼 수있는 유일한 방법은 첫 번째 X와 Y 값의 상자 비교를위한 일종의 상자를 알아내는 것입니다. 두 번째 루프에 대한 일종의 설정/statemenet 조건과 더 많거나 적은 값을 프로그래밍 방식으로 설정하는 것입니다. 우리가 움직이거나 새로운 상자를 놓을 때마다 손을 각 상자의 깊이에 놓으십시오. 따라서 복잡도는 상자 인스턴스 이름의 순서에 따라 깊이를 설정하고이 상자를 다른 모든 상자와 비교 한 다음 다른 모든 상자를 다른 상자로 비교하고 깊이를 쌓아야하는 실제 순서를 따라 잡는 것까지 진행됩니다. 경우에 따라 왼쪽에서 오른쪽으로, 아래에서 위로, 다시 왼쪽에서 오른쪽으로 이동할 수 있습니다. 부드러운 패턴이 없습니다.

제공된 링크로 놀아주세요. 다른 질문이 있거나 더 많은 정보가 필요하면 알려주세요. 필사적입니다!

답변

0

모든 상자를 배열에 추가하고 X 및 Y 값 (타일 X 및 Y)을 기준으로 정렬합니다. 큰 세트는 아니므로 성능에 대해 걱정할 필요가 없습니다.

X로 정렬하고 X가 같은 경우 Y로 정렬합니다. 분명히 놓친 것이 아니라면 그 문제를 해결할 수 있습니다.

+0

우리는 생각했습니다. 일부 상자는 3 개의 격자 공간이 될 수 있습니다. 따라서 3x 너비 상자와 1x1 너비 상자가 모두 동일한 X 위치를 갖는 것으로 등록됩니다. X 값 (확인해야 할 첫 번째 조건 임)을 기반으로하는 열은 이미 엉망이되어 3 배 폭의 상자 위에 무언가를 배치합니다. 그래서 깊이는 서로 위에 겹쳐진 박스를 위해 잘 작동 할 것입니다. 그러나 우리는 이미 그 작업을 어느 정도하고 문제를 해결하지 못합니다. 이것은 내가 우리가 모든 것에 모든 것을 검사하는 방법을 필요로한다고 생각하는 곳입니다. 한숨 –

+0

흠. 네, 무슨 뜻인지 알 것 같아요. 오른쪽 상단에서 시작하여 "동심"패턴으로 나가는 타일을 그리는 순서를 설정한다면 어떨까요? 이렇게 : http://dl.dropbox.com/u/340238/Screen%20shot%202011-10-05%20at%205.56.16%20PM.jpg 아마도 최적은 아니지만 다른 방법을 생각할 수는 없습니다. 그 순간. 숫자는 역순으로 그리는 순서입니다. 예를 들면, 다른 모든 것 위에 1. 이미 사용 된 상자 (타일에서 찾은 상자)를 기억해야하므로 두 번 추가하지 마십시오. –

+0

고마워요 -하지만 같은 문제가 발생합니다 - 1이 왼쪽 하단에서 시작하면 거기에서 동심으로 이동합니다. 마지막 숫자는 4라고 말하면 마지막으로 설정됩니다. 4가 바닥에 있으면 깊이가됩니다. 위의 상자보다 높습니다. 루프에 대해 x/y 위치와 병합했지만 동일한 문제가 발생했습니다. 문제가 얼마나 쉬운 지 재미 있지만, 함수/암호! –