0

私は現在、このようなチェス盤を吐き出すプログラムを作成しようとしています (実際のプログラムでは見栄えが良くなりますが、編集者は "-" 記号を使用するのを好まないので、それらを引用符で囲みます):

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

showBoard メソッドと addPiece メソッドの 2 つのメソッドを使用しています。私は現在、addPiece メソッドに行き詰まっており、メソッドが 3 つの入力 (行 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 メソッドの書き方と関係があることはわかっていますが、メソッドの書き方についてはまだ少し混乱しており、それが私の最善の試みです (うまくいきません)。誰か提案はありますか?ありがとう!

4

3 に答える 3

2

ピースの値を印刷することはありません

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

}

また、ボードを表示する前にピースを追加する必要があります。

addPiece(1,2,"R"); //before
showBoard();
于 2013-04-10T17:31:23.413 に答える
1

なぜ new String(r) を使用しているのですか? ボード配列はすでに文字列の配列です。次を使用してください。

board[x][y] = r;

また、メインの showBoard メソッドの後にピースを追加し、それらを切り替えます

addPiece(1,2,"R");
showBoard();
于 2013-04-10T17:30:16.663 に答える
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.
    }
}
于 2013-04-10T17:32:22.600 に答える