需要帮助的Java国际象棋程序

时间:2020-01-02 10:39:22

标签: java chess

我有一个项目要做,现在我完全陷入困境,对如何继续执行代码一无所知。关于如何编写代码,我有一些任务和说明。 这意味着代码应至少包含以下类和方法:

  1. 2个枚举,一个用WHITE和BLACK表示颜色,一个称为ClassPieceType,表示KING,QUEEN ...
  2. ChessPiece,这是一个抽象类,并且所有继承自ChessPiece的King,Queen等类型的类。
  3. 代表董事会的董事会,上面有他所有的数字。但是我不知何故无法取得进展,我也不知道如何实现这些方法。
package chess;

public class Board {

    public static String[][] chessBoard2() {
        String[][] board = new String[8][8];

        char letter = 'a';
        int number;

        for (int row = 0; row < board.length; row++) {
            number = 8;
            for (int column = 0; column < board[0].length; column++) {
                board[row][column] = Character.toString(letter) + number;
                number--;
            }
            letter++;
        }
        return board;
    }
}

这是我创建板方法的想法。但是任务说

  1. 方法必须为public Board(),这样才能在正常状态下创建木板,并且必须使用unicode来添加碎片。

但是我也不知道如何实现unicode。又怎么称呼public Board?没有返回类型。我只是不知道了。 我希望有耐心的人能帮助我。我实在无能为力,无法编程,我们必须在几天内完成任务。

1 个答案:

答案 0 :(得分:1)

“ 1。方法必须为public Board(),这样才能使板处于正常状态[...]”

这种混乱不成立的事实是,这种东西不被称为“方法”,而是被称为“构造函数”。它初始化要创建的对象。目的是当您编写new Board()时,它确实会以国际象棋的起始位置来初始化棋盘,这与您使用chessBoard2()方法所尝试的类似。 Board类如下所示:

public class Board {
    private final String[][] board;

    public Board() {
        this.board = new String[8][8];

        Board.fillFirstLine(this.board, 8, Color.BLACK);
        Board.fillPawnLine(this.board, 7, Color.BLACK);
        Board.fillPawnLine(this.board, 2, Color.WHITE);
        Board.fillFirstLine(this.board, 1, Color.WHITE);
    }

    private static void fillFirstLine(String[][] board, int rowNumber, Color color) {
        // ...
    }

    private static void fillPawnLine(String[][] board, int rowNumber, Color color) {
        // ...
    }
}

然后在其他地方写

Board board = new Board();

您已经准备好完全初始化的板卡。

“ [...],并且必须使用unicode加上内容。”

国际象棋字符集中存在棋子图标,请参见Chess symbols in Unicode。这意味着您可以将字符串"\u2654"或字符串"♔"保存在数组中,以使该片段位于指定位置。