2011-11-21 5 views
0

Java 2D 배열 (NxN 퍼즐) (int state[][])에서 NxN 퍼즐을 풀려고 노력 중이므로 더 이상 갈 수 없어 도움이 필요합니다.2 차원 배열에서 NxN 퍼즐 풀기

맨하탄 거리 휴리스틱을 사용하고 있습니다. 지금 가지고있는 문제는 노드의 후계자를 생성 (코드화)하는 방법입니다. 노드의 후계자 (이웃)가 어떻게 생성되는지 그물에 수많은 예제를 보았지만 모두 1 차원 배열입니다. 2D 배열에서 노드의 후계 생성을 가르치는 튜토리얼을 찾을 수 없습니다.

누군가가 내가 노드의 후계자를 생성하는 코드를 작성하는 방법을 찾도록 도와 줄 수 있는지 묻습니다. 노드는 빈 공간으로 LEFT, RIGHT, DOWN 또는 UP으로 이동할 수 있습니다. 보드 크기는 NxN입니다. 그래서 이것을 코딩 할 수있는 방법을 알고 싶습니다.

2 차원 어레이를 사용하여 게임을 프로그래밍하는 것이 처음이므로 잘하고 잘 설명 할 수 있도록 해답을 설명해주십시오.

+0

이 숙제가 있습니까? – dmcnelis

+0

@Eddy Freeman : 다음에 숙제에 대한 태그를 기억하십시오. – hugomg

+1

숙제가 아닙니다. 사실 그것이 처음이라는 것이 숙제라는 것을 의미하지는 않습니다. 숙제 태그를 추가하지 마십시오. 숙제 인 경우 직접 태그를 달았습니다. –

답변

1

은 아마 당신이 가지고있는 코드가 있습니다 (I, J-1), (I, J + 1), (I-1, J), 이러한 정의해야

UP as (i + width * (j-1)) 
DOWN as (i + width * (j+1)) 
LEFT as (i - 1 + width * j) 
RIGHT as (i + 1 + width *j) 

정의 (I + 1, j)를 각각 나타낸다.

편집

: 1 차원 배열에서

, 당신은 요소 인덱스를 평평하게해야합니다. 요소가 열 i, 행 j에 있으면 플랫 주소는 (j * width [의미 skip j rows] + i [이 행의 항목을 건너 뜁니다])가됩니다. 2D 배열을 사용하는 경우 플랫 주소 대신 간단히 array [i] [j]를 사용할 수 있습니다.

+0

답변을 주셔서 감사하지만 제발 잘 이해할 수 있도록 도와주세요. 이처럼 게임을 프로그래밍하기 위해 2D 어레이를 사용하는 것은 처음입니다. 그래서 모든 것이 나에게 새 것처럼 보입니다. 제발 대답을 편집하고 제게 (i-1, j), (i + 1, j) 등으로 정의하여 무슨 뜻인지 이해할 수있게 해주시겠습니까? 답장을 보내 주셔서 감사합니다 –

+0

감사합니다. 그렇다면 평면 배열은 2D 배열과 어떤 관련이 있습니까? –

+1

그래서 내가 제안하는 것은 1D 배열에 대한 인덱스로 사용되는 각 값을 원래의 코드에서 찾아서 위로/아래로/왼쪽/오른쪽/현재를 참조하고 두 번째 인덱스로 변환하는 것입니다 . – perreal

관련 문제