2013-04-10 2 views
0

В настоящее время я пытаюсь создать программу, которая выплевывает такую ​​шахматную доску (она выглядит лучше в реальной программе, просто редактору не нравится, когда я использую символ «-», так что я положил их в кавычки):Использование 2D-арраиста для создания шахматной доски и фигур

----------------- 
| | | | |K| | | | 
----------------- 
| |P| | | |P| | | 
----------------- 
| | | | | | | | | 
----------------- 
| | | | | | | | | 
----------------- 
| | | | | | | | | 
----------------- 
| | | | | | | | | 
----------------- 
| | | | | |N| | | 
----------------- 
| | | | |K| | | | 
----------------- 

Я использую два метода, метод showBoard и метод addPiece. В настоящее время я придерживаюсь метода addPiece, и я пытаюсь сделать так, что метод принимает три ввода: строку int, столбец int и имя строки (например, K для короля). Тем не менее, я не могу заставить метод addPiece размещать фрагменты, в которых я хочу, чтобы они уходили или даже вообще. Вот то, что я до сих пор:

public class ChessBoard { 

public static String[][] board = new String[8][8]; 
public static int row = 0; 
public static int col = 0; 

public static void addPiece(int x, int y, String r){ 

    board[x][y] = new String(r); 
} 

public static void showBoard(){ 
    for (row = 0; row < board.length; row++) 
    { 
     System.out.println(""); 
     System.out.println("---------------"); 

     for(col = 0; col < board[row].length; col++) 
     { 
      System.out.print("| "); 

     } 
    } 
    System.out.println(""); 
    System.out.println("---------------"); 
} 

public static void main(String[] args) { 
System.out.println(board.length); 
showBoard(); 
addPiece(1,2,"R"); 
} 
} 

Я знаю, что есть что-то делать с тем, как я писал мой метод addpiece, но я все еще отчасти смущен о том, как писать метод должен быть, и это моя лучшая попытка (которая не работает). У кого-нибудь есть предложения? Благодаря!

+0

Если вы пометите разделы своего сообщения как код, редактор примет их независимо от любых символов форматирования, которые они содержат. –

+2

, когда вы показываете панель() в первый раз, когда отображается панель. Тогда вы добавляете свою часть. Обратите внимание, что после этого вы снова не показываете плату? –

+1

также вы можете просто написать 'board [x] [y] = r;' –

ответ

1

Почему вы используете новую строку (r)? Ваш массив доска уже массив строк, просто используйте:

board[x][y] = r; 

Также вы добавляете часть после того, как метод showBoard в основном, включите их вокруг

addPiece(1,2,"R"); 
showBoard(); 
2

Вы никогда не печатать штук значения

for(col = 0; col < board[row].length; col++) 
{ 
    if (board[row][col] != null) { 
     System.out.print("|" + board[row][col]); 
    } 
    else 
     System.out.print("| "); 

} 

А также вам нужно добавить pience, прежде чем показать доску:

addPiece(1,2,"R"); //before 
showBoard(); 
+0

Это сработало! Спасибо! Глядя на ваш код, это кажется настолько очевидным, что мне нужно распечатать значения штук в методе доски, и это мне просто не приходило в голову. Еще раз спасибо. – penguinteacher

+0

приветствую :) –

1

Обратите внимание, что addPiece меняет состояние платы. Если вы хотите увидеть это изменение, вам нужно повторно отобразить новое состояние платы.

public class ChessBoard { 

    public static String[][] board = new String[8][8]; 

    public static void addPiece(int x, int y, String r){ 

     board[x][y] = r;//no need for new String(), board is already made of Strings. 
    } 

    public static void showBoard(){ 
     //it's generally better practice to initialize loop counters in the loop themselves 
     for (int row = 0; row < board.length; row++) 
     { 
      System.out.println(""); 
      System.out.println("---------------"); 

      for(int col = 0; col < board[row].length; col++) 
      { 

       System.out.print("|"); //you're only printing spaces in the spots 
       if(board[column][row] == null){ 
        System.ot.print(" "); 
       }else{ 
        System.out.print(board[column][row]); 
       } 
      } 
     } 
     System.out.println(""); 
     System.out.println("---------------"); 
    } 

    public static void main(String[] args) { 
     System.out.println(board.length); 
     showBoard();  //board does not have R in it yet. 
     addPiece(1,2,"R"); //board now has R in it. 
     showBoard();  //display the new board with R in it. 
    } 
} 
Смежные вопросы