2016-04-13 2 views
1

Я пытаюсь создать шахматный дизайн в консоли с использованием 2D-массивов. Я сделал границы с "|" и "-" для создания игрового поля. Однако, у меня есть проблемы с переключением цвета поля (белый | черный | белый) Вот мой код (без изменения цвета на пронумерованных полей)2D-массив шахматной доски

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; 
     } 

    } 
} 

Я пробовал использовать различные методы, но он всегда получал как-то в код и сломал его. У вас есть хорошее решение?

Заранее благодарен!

+1

Обычно мне нравится делать пользовательский класс для каждого квадрата на доске. Квадрат может содержать много информации, включая кусок на площади. Это сделает код намного проще. – jdweng

ответ

1

Вы можете установить альтернативный вариант с помощью x% 2 == 0, чтобы определить нечетный или четный элемент там, где это необходимо.

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

Ваш цикл может не печатать точно, что вы думаете о его печати. Вы должны добавить фигурные скобки в ваш цикл с индексом h, чтобы ваш отступ соответствовал фактической логике.

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

Он выскользнул, когда я что-то менял, уже исправил. спасибо – Lopah

Смежные вопросы