1

저는 2 차원 배열을 가지고 있으며 어떻게 행과 열을 참조 할 수 있는지 알고 싶습니다. [행, 열] 또는 [열, 행]을 사용합니까? 그래픽도 있습니다. 각 그래픽의 (x, y) 좌표 세트를 (row * size, col * size) 또는 (col * size, row * size)로 계산합니까?2 차원 배열을 참조하십시오 - 행과 열

전체 2 차원 배열은 그리드에 대한 작성 지침입니다. 배열의 각 요소는 모눈 조각을 나타냅니다. 이 그리드와 그 부분을 구성하는 방법을 알고 있으며 배열 요소를 액세스하고 조작하는 방법을 알고 있습니다.

문제는 그리드를 구성 할 때 각 조각의 x 및 y 좌표를 계산해야하지만 x 또는 y 좌표에 내 변수 curRow를 사용해야하는지 여부는 알 수 없습니다. 변수 curCol과 비슷합니다.

내 코드는 작동하지만 혼란 스럽습니다. 행렬이 y 좌표를 제어하고 열이 x 좌표를 제어하는 ​​것처럼 생각합니다. 행렬을 참조하는 방식을 방금 배웠기 때문입니다. 나는 이것을 어떻게하는지 확신 할 수 없다는 이유로 내게 묻는다. 이전에는 [행, 열]을 루프로 사용하고 (행 * 크기, 열 * 크기) 위치를 지정했습니다.

코드 원경이다

function buildGrid(gridInfo:Array):Sprite { 
    var displaySprite:Sprite = new Sprite(); 

    for(var curRow:uint=0;curRow<gridInfo.length;curRow++) { 
     for(var curCol:uint=0;curCol<gridInfo[curRow].length;curCol++) { 
      var infoRef:Object = gridInfo[curRow][curCol];//create reference for fast access 

      var pieceGraphic:Shape = new Shape(); 
      pieceGraphic.graphics.beginFill(infoRef.fillColor); 
      pieceGraphic.graphics.lineStyle(infoRef.borderThickness,infoRef.theBorderColor); 
      pieceGraphic.graphics.drawRect(0,0,infoRef.sideLength,infoRef.sideLength); 
      pieceGraphic.graphics.endFill(); 

      pieceGraphic.x = curRow*(infoRef.sideLength+infoRef.spaceX);//later use of graphic requires known x 
      pieceGraphic.y = curCol*(infoRef.sideLength+infoRef.spaceY);//later use of graphic requires known y 

      displaySprite.addChild(pieceGraphic); 
     } 
    } 

    return displaySprite; 
} 
+0

그냥 x와 y를 사용하고 격자로 생각하십시오. x는 너비이고, y는 높이입니다. 행과 열은 배열의 임의의 이름입니다. 이 curX와 curY를 만드는 것이 더 명확하게 관련됩니다. 하지만 코드가 좋으므로 한 장에 코드를 그리면 코드를 조금 더 잘 이해할 수 있습니다. – Gone3d

+0

curX 및 curY라고하는 좋은 아이디어. 그것은 나에게 완벽하게 이해합니다. 다차원 배열에는 행과 열이 없으므로 대체 변수 이름이 좋습니다. 여전히 행렬이 행과 열을 다르게 사용하는 것처럼 보이지만 수학 클래스의 행렬에 대해서는 아직 알지 못하기 때문에 지금은 무시할 것입니다. –

+0

gridInfo 프로그래밍 방식 (행, 행)을 만들지 않을 때 또 다른 문제가 발생합니다. buildGrid()는 내 TD 게임에 대한 스프라이트를 만듭니다. 나는 대부분의 맵에 대해 gridInfo를 수동으로 생성한다. 나는 종이에지도를 그려서 배열에 보이는 것을 씁니다. 그러나지도에 몇 개의 행과 열이 있습니까? 배열에 있어야하는 것을 볼 수 없기 때문에 배열을 뒤집어 야합니다! 22 x 22 타일 맵을 만들면 12 행 22 열을 볼 수 있습니다. 추가 매개 변수를 가져 와서 함수 rotateMatrix()를 호출하여 문제를 해결할 수 있습니다. 나중에 함수를 씁니다. –

답변

0

은 [행, 열]있는 2 개 차원 어레이를 참조 할 올바른지하지만 curX 및 curY 같은 다른 변수 이름 쉽다. 프로젝트 전체에서 인덱스가 의미하는 것과 인덱스가 사용되는 것과 일관성을 유지하는 것이 중요합니다. 배열의 첫 번째 요소에 액세스하려면 행 또는 curX에 대한 루프를 만들고 두 번째 차원의 요소에 대해 열 또는 curY에 대한 루프를 만듭니다.

(row * size, col * size) 또는 (curX * size, curY * size)를 사용하여 격자의 그래픽에 대한 좌표 세트 (x, y)를 계산할 수 있으므로 코드가 정확하고 필요하지 않습니다 변경 될 수 있습니다.

행은 가로이고 열은 세로입니다.