2016-01-23 7 views
-4

Я новичок в программировании на Java и создал консольную игру Судоку как практику. Алгоритм обратного отслеживания генерирует завершенную судоку, а другой метод «выкапывает дыры» в случайные ячейки (в отношении сложности). Прямо сейчас, значение 0 установлено для пустых ячеек, но мне не нравится, как выглядит Судоку ... слишком много чисел на доске, и я думаю, что пробелы были бы хорошей альтернативой. Игрок должен по-прежнему в состоянии заменить (теперь «0», а затем пробел) в ячейках со своей собственной догадкой. Есть ли способ заменить значение int, когда оно равно 0? Алгоритм и метод digHole используют метод setValue для двумерного массива (координат).Судоку: показать значение int как пробел

Спасибо за помощь!

Вот мой совет рисунок:

public static void drawBoard() { 
    String[] abc = { "A", "B", "C", "D", "E", "F", "G", "H", "I" }; 
    // i := rows 
    for (int i = 0; i <= 8; i++) { 
     // first row 
     if (i == 0) { 
      System.out.println(""); 
      // coordinates 1-9 
      System.out.println("  1 2 3 4 5 6 7 8 9\n" + "  _____________________________________ \n" 
          + " |          |"); 
     } 
     // j := columns in row i 
     for (int j = 0; j <= 8; j++) { 
      if (j == 0) { 
       // coordinates A-I and first column 
       System.out.print(" " + abc[i] + " | " + sudokuCells[i][j].getValue() + " "); 
      } else if (j == 8) { 
       // last cell in current row 
       System.out.print(" " + sudokuCells[i][j].getValue() + " |"); 
       System.out.println(""); 
      } else if (j == 2 || j == 5) { 
       //frame 
       System.out.print(" " + sudokuCells[i][j].getValue() + " |"); 
      } else { 
       //whitespace as seperation 
       System.out.print(" " + sudokuCells[i][j].getValue() + " "); 
      } 
     } 
     // last row with frame 
     if (i == 8) { 
      System.out.println(" |_____________________________________|"); 
      System.out.println(); 
     } 
+0

У вас есть код, чтобы дать нам представление о том, как вы пытаетесь достичь? – cozyconemotel

+0

Простой, если в режиме отображения должно быть достаточно. 'if (data [x] [y] == 0) {display (" ")}' заменять отображение любым способом, который вы используете для отображения, и данными с вашим источником данных. – HopefullyHelpful

+1

Мы не заботимся о вашем генерации кода, просто измените метод, в котором вы печатаете судоку на консоль. – HopefullyHelpful

ответ

-1

Почему не просто установить его как:

" " 

Это должно сделать трюк, может опубликовать пример кода, а?

-1

Я предлагаю сохранить логическое представление, как сейчас (с 0), и просто распечатать пробел, когда вы сталкиваетесь с 0, поэтому вам нужно изменить только функцию, печатающую плату!

Как это, например

for(int i = 0; i < board.length; i++) 
{ 
    for(int j = 0 j < board.length; j++) 
    { 
     Cells curr = board[i][j]; 
     if(curr.getValue() == 0) 
     System.out.print(" "); 
     else 
     System.out.print(curr.getValue()) 
    } 
    System.out.println() 
}