首先,我不確定是否允許問這樣的問題。所以我正在嘗試創建一個棋盤遊戲,並且我被困在爲Piece生成有效棋步的實施中。這是類圖的摘錄。用Java實現棋盤遊戲
你可以認爲這個棋盤遊戲如象棋,所以我們需要知道其他部分的位置,同時產生有效的移動。問題是我不知道如何檢查它。我的班級圖錯了嗎?或者我每次檢查廣場時都應該檢查董事會嗎?我怎樣才能在Java中做到這一點?感謝您的幫助。
首先,我不確定是否允許問這樣的問題。所以我正在嘗試創建一個棋盤遊戲,並且我被困在爲Piece生成有效棋步的實施中。這是類圖的摘錄。用Java實現棋盤遊戲
你可以認爲這個棋盤遊戲如象棋,所以我們需要知道其他部分的位置,同時產生有效的移動。問題是我不知道如何檢查它。我的班級圖錯了嗎?或者我每次檢查廣場時都應該檢查董事會嗎?我怎樣才能在Java中做到這一點?感謝您的幫助。
這件作品不應該決定它的有效動作是什麼,它只應該知道它在哪裏以及它如何移動。它對這種邏輯不負責任。
董事會應該管理是否允許或不允許(也就是說,它需要一塊返回其可能的舉動,並反過來返回有效的舉動)。
的Piece
類公開getPossibleMoves
方法,它返回位置的列表它可以達到:
public List<Square> getPossibleMoves(){ // might want to differentiate types of moves
然後,板類有一個getValidMoves
方法,它接受片並返回其有效移動。
public List<Square> getValidMoves(Piece piece) {
return piece.getPossibleMoves().
stream(). // and filter by
filter(move -> isOnValidBoardCoordinate(move)). // can shorten
filter(move -> doesNotIntersectOtherPiece(move)).
filter(move -> otherValidation(move)).
collect(Collectors.toList());
}
我也曾想過,問題是,我有不同類型的作品,所以這意味着我必須檢查作品的類型是否正確? – jamesalone
不,一塊只返回可能的移動 - 這應該是一個多態的方法。 –
你的意思是在'Piece'課上實施運動規則?我很困惑。 – jamesalone
你有任何代碼可以支持你的問題嗎? – CKing
一個UML圖,世界上第一種顯示你仍然是學生的方法;)關於這個問題 - 作品不應該決定它的有效動作是什麼,它只應該知道它在哪裏以及它如何能夠移動,董事會應該管理是否允許或不允許(也就是說,它需要一塊返回其可能的舉動,並反過來返回有效的舉動) –
@BenjaminGruenbaum:你應該做出答案和OP應該接受它。 –