2012-04-13 2 views
3

프로젝트 용 테트리스 클론을 만들고 있습니다. 나는 꽤 많이 끝났지 만, 클리어 라인 클래스에는 내가 흔들 수없는 버그가있다. 나는 스프라이트를 그린 10 * 20 그리드를 만들었습니다. 바닥에 선이 생기면 제대로 작동하지만 선을 지우고 모든 것을 아래로 움직입니다. 이것은 내 명확한 클래스의 코드입니다.테트리스 클리어 라인 문제

public static void ClearLines() 
{ 
    for (int CountY = Game1.LandedBlocks.GetLength(1) - 1; CountY >= 0; CountY--) 
    { 
     bool clearLine = true; 
     for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0); CountX++) 
     { 
      clearLine &= Game1.LandedBlocks[CountX, CountY] != -1; 
     } 
     if (clearLine) 
     { 
      for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0); CountX++) 
      { 
       Game1.LandedBlocks[CountX, CountY] = -1; 
      } 
      for (int y = Game1.LandedBlocks.GetLength(1) - 1; y > 0; y--) 
      { 
       for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0);     CountX++) 
       { 
        Game1.LandedBlocks[CountX, y] = Game1.LandedBlocks[CountX, y - 1]; 
       } 
      } 
      CountY++; 
      Game1.rows++; 
      Game1.score += 100; 
     } 
    } 
} 

누구나 할 수있는 일을 밝힐 수 있다면 정말 고맙겠습니다. 내가 해봤 너무 많은 아무것도

그것은 문제처럼 보인다
+0

게시 – user1250838

+0

방금 ​​정렬 했으므로 승인을 기다려야합니다. – ridecar2

+0

방금 ​​편집 했으므로 곧 개선 될 예정입니다. –

답변

2

  for (int y = Game1.LandedBlocks.GetLength(1) - 1; y > 0; y--) 
      { 
       for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0); CountX++) 
       { 
        Game1.LandedBlocks[CountX, y] = Game1.LandedBlocks[CountX, y - 1]; 
       } 
      } 

이 (내가 생각하는) 함께 :(작동 한 행 아래 모든 라인을 이동합니다. 문제는 항상 루프 경계입니다 당신은 당신이 삭제하는 중 선 위에 선을 이동해야 0을 줄 것이다. 변경 y > 0lineNumber이 라인이 삭제됩니다 y > lineNumber에. 내가 보았을 때 포맷 된 클래스의 형식에 대한 죄송합니다.

+0

지금 시도해 주셔서 감사합니다.가는 방법을 알려 드리겠습니다. – user1250838

+0

덕분에 조언을 구합니다. 내가 있어야 할 곳으로 나를 데려 갔어. 문제는 첫 번째 for 루프에서 (y = Game1.LandedBlocks.GetLength (1)) 발생했습니다. 선을 읽지 않아도 문제가 해결되지 않았지만 조언을 통해 도움을받을 수 있습니다. – user1250838

+0

@ user1250838 문제 없음 – twain249