2016-04-13 13 views
1

2D dizileri kullanarak bir satıra benzeyen tasarım yapmaya çalışıyorum. "|" ile kenarlıklar yaptım ve bir oyun alanı tasarlamak için "-". İşte (numaralı alanlarda renklerin değişimi olmadan) benim kod2D dizi satranç tahtası

public class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] array = new int[10]; 
     int[,] array2 = new int[6, 9]; 

     for(int i = 0;i < array2.GetLength(0); i++) 
     { 
      if (i == array2.GetLength(0)-1 || i == 0) 
      { 
       for (int h = 0; h < array2.GetLength(1); h++) 
        decidingColors(false); 
        Console.Write("|" + "-"); 
      } 
      else 
      for (int x = 0;x < array2.GetLength(1); x++) 
      { 
        decidingColors(false); 
       Console.Write("|"); 
        decidingColors(true); 
       Console.Write(array2[i, x]); 

      } 
      decidingColors(false); 
      Console.Write("|"); 
      Console.WriteLine(); 
     } 
     Console.ReadLine(); 
    } 
    public static void decidingColors(bool wentThrough) 
    { 
     if(wentThrough == true) 
     { 
      Console.BackgroundColor = ConsoleColor.White; 
      Console.ForegroundColor = ConsoleColor.Black; 
     } 
     else 
     { 
      Console.BackgroundColor = ConsoleColor.Black; 
      Console.ForegroundColor = ConsoleColor.White; 
     } 

    } 
} 

Ben farklı yöntemlerle çalıştı ama her yerde var Ancak, alanın anahtarlama renkler (| | siyah beyaz) sorun var Bir şekilde kod içine ve kırdı. İyi bir çözümün var mı?

Şimdiden teşekkürler!

+1

Genellikle tahtadaki her kare için özel sınıf yapmayı seviyorum. Kare, kare üzerindeki parça dahil olmak üzere birçok bilgi içerebilir. Kodu çok daha basit hale getirecek. – jdweng

cevap

1

Gerekirse tek veya çift öğeyi belirlemek için x% 2 == 0 kullanarak alternate ayarlayabilirsiniz.

for (int x = 0;x < array2.GetLength(1); x++) 
{ 
    decidingColors(false); 
    Console.Write("|"); 
    decidingColors(x % 2 == 0); 
    Console.Write(array2[i, x]); 
} 
2

Döngüsünüz, yazdırdığını düşündüğünüz şeyi tam olarak yazdırmayabilir. İndeks h ile döngünüze kaşlı ayraç eklemeniz gerekir, böylece girintiniz gerçek mantıkla eşleşir.

for (int h = 0; h < array2.GetLength(1); h++) { 
    decidingColors(false); 
    Console.Write("|" + "-"); 
} 
+0

Bir şeyi değiştirdiğimde, daha önce sabitlenmişti. teşekkür ederim – Lopah