我正在用Java編寫一個國際象棋庫並專注於它的面向對象的設計。我的想法是創建一個名爲Tile的類,它包含座標(x,y),布爾isOccupied和它包含的塊的信息。用Java創建一個二維數組(開發國際象棋)
它看起來像這樣:
public abstract class Tile {
boolean isOccupied;
int x, y;
Piece piece;
Tile(boolean isOccupied, int x, int y, Piece piece) {
this.isOccupied = isOccupied;
this.x = x;
this.y = y;
this.piece = piece;
}
//Returns the piece on the tile - will be implemented in the subclass
public abstract Piece getPiece();
//Places a piece on the tile - will be implemented in the subclass
public abstract void placePiece(Piece piece);
public abstract void removePiece();
}
然後,在我的作品類,我試圖做的是檢查的一塊目的地是否是一個有效的位置的方法。該函數聲明可能看起來像:
public abstract boolean isValidLocation(Tile[][] board, int fromX, int fromY, int toX, int toY);
我期待着創建一個名爲板類瓷磚的二維數組,並設置起點座標和終點座標,做每件子類,看是否計算目標位置是有效的。
我的問題是:
1)是否有可能創建一個類(瓷磚的二維數組)像這樣,讓我想到它的工作?
2)我將不得不添加一個函數,在我的類的任何地方生成'n x n'Tile數組?
3)有沒有更簡單的方法來做到這一點?
你真的需要'Tile'類嗎? 「Piece」數組不會更好,空元素是自由方塊。 – Kayaman
如果我想在將來將其擴展到GUI,我是不是需要Tile或Board類? – user6792790
一個'Board'類對於數組來說是一個很好的容器,但是對於GUI本身並不需要。一個基於數組進行自定義繪製的JPanel子類就足夠了。雖然我相信你認爲'GridLayout'是一個棋盤的完美用例(不是)),所以將每個tile和piece建模爲一個GUI元素都有點粗略。 – Kayaman