2012-04-13 72 views
3

我正在製作項目的俄羅斯方塊克隆。我已經完成了很多工作,但我的清晰線條類有一個我無法動搖的bug。我製作了一個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

關於該類格式遺憾。當我看着被格式化post – user1250838 2012-04-13 16:00:32

+0

我剛剛整理出來,只需要等待批准 – ridecar2 2012-04-13 16:01:34

+0

我剛剛編輯過,所以希望不久就會好起來的。 – 2012-04-13 16:01:37

回答

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 > 0y > lineNumber其中lineNumber是行,你被清除。

+0

謝謝你現在會告訴你它是如何去 – user1250838 2012-04-13 17:12:31

+0

感謝一個工廠的意見。把我帶到了我需要的地方。問題出現在第一個for循環中(y = Game1.LandedBlocks.GetLength(1))。沒有閱讀要清除的行,但您的建議絕對是什麼幫助我找到它 – user1250838 2012-04-13 18:05:58

+0

@ user1250838沒問題 – twain249 2012-04-13 18:51:11