2016-04-17 8 views
0

Ich mache "Entsperre mich" -ähnliches Spiel in C#. Verwenden von Schaltflächen und Arrays als Karte. lvl1 Array ist ein Board/Karte der Ebene 1. Und wenn die Blöcke (Schaltflächen) dynamisch erstellt und fügt zu Panel, ich möchte sie färben. Wenn ich das Level abgeschlossen habe, muss es das Panel löschen und das Board neu zeichnen, aber dieses Mal muss es board/map von lvl2 array lesen. Also die Frage ist, wie man den Namen des Arrays in switch case loop dynamisch setzt? Hier ist der Code:Verwenden verschiedener Arrays in einem switch Fall C#

int[,] lvl1 = 
      { 
      {1,1,2,3,3,4,0}, 
      {0,0,2,0,5,4,0}, 
      {6,0,99,99,5,4,89}, 
      {6,0,7,7,8,8,0}, 
      {9,10,0,11,12,12,0}, 
      {9,10,0,11,13,13,0}, 
      {0,0,0,0,0,0,0}, 
       }; 
     switch (lvl1[i, j]) 
        { 
         case 1: 

          lvl1[i,j] = 1; 
          btn.BackColor = Color.Yellow; 
          break; 

         case 2: 

          lvl1[i, j] = 2; 
          btn.BackColor = Color.Cyan; 
          break; 

         case 3: 

          lvl1[i, j] = 3; 
          btn.BackColor = Color.ForestGreen; 
          break; 

         case 4: 

          lvl1[i, j] = 4; 
          btn.BackColor = Color.DeepSkyBlue; 
          break; 

         case 5: 

          lvl1[i, j] = 5; 
          btn.BackColor = Color.Violet; 
          break; 
         case 6: 

          lvl1[i, j] = 6; 
          btn.BackColor = Color.Orange; 
          break; 
         case 7: 

          lvl1[i, j] = 7; 
          btn.BackColor = Color.LimeGreen; 
          break; 
         case 8: 

          lvl1[i, j] = 8; 
          btn.BackColor = Color.Teal; 
          break; 
         case 9: 

          lvl1[i, j] = 9; 
          btn.BackColor = Color.Aqua; 
          break; 
         case 10: 

          lvl1[i, j] = 10; 
          btn.BackColor = Color.LightGoldenrodYellow; 
          break; 
         case 11: 

          lvl1[i, j] = 11; 
          btn.BackColor = Color.OrangeRed; 
          break; 
    } 

Antwort

2

Sie verwenden eine andere Variable zu, dass zu zeigen.

int[,] currentLevel; 

currentLevel = lvl1; 

Dann bei den Kontrollen

switch (currentLevel[i, j]) 
... 

Und wenn Sie eine andere Ebene wollen, müssen Sie nur currentLevel = lvl2

+0

ja. Ich habe es versucht. Es zeigte sich ein Fehler wie kein Override mit 2 Argumenten ?? etwas wie das –

+0

können Sie mir sagen, was ist der Typ des aktuellen Levels? ist es Zeichenfolge? oder...?? –

+0

@ НямбаярА. Wie in der Antwort gezeigt, ist es "int [,]", das gleiche wie die Ebenen, wie es sein sollte. –

1

ein Array von Arrays von Ebenen erstellen, so dass anstelle int[,] lvl1 zu haben, müssen Sie List<int[,]> Levels, dann können Sie jede Spielstufe aus dieser Liste verwenden.

Verwandte Themen