"castling done for white pawns with kind and queen side + enable if rook
or kind already moved"
This commit is contained in:
parent
b4849591d0
commit
48631a1d96
|
|
@ -125,7 +125,37 @@ public class Board {
|
|||
if (select) {
|
||||
boardHistory.add(new BoardHistory(board,turnNumber,turnColor));
|
||||
Piece pieceToMove = this.board.get(this.ym).get(this.xm);
|
||||
boolean isCastlingMove = pieceToMove.getType() == PieceType.King && Math.abs(x - xm) == 2;
|
||||
|
||||
//check for castling mode:
|
||||
if (isCastlingMove) {
|
||||
|
||||
//kingside
|
||||
if (x > xm) {
|
||||
Piece rook = board.get(ym).get(7);
|
||||
board.get(ym).set(5, rook);
|
||||
board.get(ym).set(7, null);
|
||||
if (rook != null) {
|
||||
rook.x = 5;
|
||||
rook.setMoved(true);
|
||||
}
|
||||
}
|
||||
if (x < xm) {
|
||||
Piece rook = board.get(ym).get(0);
|
||||
board.get(ym).set(3, rook);
|
||||
board.get(ym).set(0, null);
|
||||
if (rook != null) {
|
||||
rook.x = 3;
|
||||
rook.setMoved(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.setPiece(x,y,pieceToMove.getType(),pieceToMove.isWhite());
|
||||
Piece movedPiece = this.getPiece(x, y);
|
||||
if (movedPiece != null) {
|
||||
movedPiece.setMoved(true);
|
||||
}
|
||||
board.get(this.ym).set(this.xm,null);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,14 +45,23 @@ public class King extends Piece {
|
|||
}
|
||||
}
|
||||
//kingside method
|
||||
if (x+3 < 8) {
|
||||
Piece Rook = board.get(y).get(x+3);
|
||||
if (Rook != null && Rook.getType()== PieceType.Rook && !Rook.movePiece() && Rook.isWhite()== this.isWhite) {
|
||||
if (!this.hasMoved() && x + 3 < 8) {
|
||||
Piece rook = board.get(y).get(x +3);
|
||||
if (rook != null && rook.getType() == PieceType.Rook && !rook.hasMoved() && rook.isWhite() == this.isWhite) {
|
||||
if (board.get(y).get(x + 1) == null && board.get(y).get(x + 2) == null) {
|
||||
moves.get(y).set(x + 2, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
//queensside method
|
||||
if (!this.hasMoved() && x - 4 >= 0) {
|
||||
Piece rook = board.get(y).get(x -4);
|
||||
if (rook != null && rook.getType() == PieceType.Rook && !rook.hasMoved() && rook.isWhite() == this.isWhite) {
|
||||
if (board.get(y).get(x - 1) == null && board.get(y).get(x - 2) == null && board.get(y).get(x - 3) == null) {
|
||||
moves.get(y).set(x - 2, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
return moves;
|
||||
}
|
||||
}
|
||||
|
|
@ -36,9 +36,13 @@ public abstract class Piece {
|
|||
public String toString() {
|
||||
return "Piece [x=" + x + ", y=" + y + ", type=" + type + ", isWhite=" + isWhite + "]";
|
||||
}
|
||||
public boolean movePiece() {
|
||||
boolean moved = false;
|
||||
return moved;
|
||||
private boolean hasMoved = false;
|
||||
|
||||
public boolean hasMoved() {
|
||||
return hasMoved;
|
||||
}
|
||||
|
||||
public void setMoved(boolean moved) {
|
||||
this.hasMoved = moved;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue