2

我正在尝试将游戏块从其初始位置移动到新位置。注意:移动被认为是“合法的”。

public void move ( int fromRow, int fromCol, int toRow, int toCol) {
    GamePiece tmp; //Gamepiece is superclass
    tmp=board[fromRow][fromCol];
    board[toRow][toCol]=tmp;
    board[fromRow][fromCol]=new Gamepiece(); //default constructor
    System.out.print(toString()); //this method has the board array printed in correct format
}

当我对此进行测试时,它不会移动正确的部分并且不会给出空白。为什么?

4

1 回答 1

3

您在代码中所做的是交换。在常规的国际象棋游戏中,您永远不需要交换。只需更换

       tmp=board[fromRow][fromCol];   // don't need this
       board[toRow][toCol]=tmp;  // don't need this
       board[fromRow][fromCol]=new Gamepiece();  // don't need this

做就是了:

       board[toRow][toCol] = board[fromRow][fromCol];
       board[fromRow][fromCol] = null

这一切都考虑到你的董事会是一个2D array of ChessPieces,例如ChessPiece[][] board = new ChessPiece[8][8];

我不知道这是否会解决你的问题,没有看到更多的代码,但我只是指出这一点。

于 2013-10-23T05:12:19.673 回答