"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) {
|
if (select) {
|
||||||
boardHistory.add(new BoardHistory(board,turnNumber,turnColor));
|
boardHistory.add(new BoardHistory(board,turnNumber,turnColor));
|
||||||
Piece pieceToMove = this.board.get(this.ym).get(this.xm);
|
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());
|
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);
|
board.get(this.ym).set(this.xm,null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,20 @@ public class King extends Piece {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//kingside method
|
//kingside method
|
||||||
if (x+3 < 8) {
|
if (!this.hasMoved() && x + 3 < 8) {
|
||||||
Piece Rook = board.get(y).get(x+3);
|
Piece rook = board.get(y).get(x +3);
|
||||||
if (Rook != null && Rook.getType()== PieceType.Rook && !Rook.movePiece() && Rook.isWhite()== this.isWhite) {
|
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) {
|
if (board.get(y).get(x + 1) == null && board.get(y).get(x + 2) == null) {
|
||||||
moves.get(y).set(x+2,true);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,13 @@ public abstract class Piece {
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Piece [x=" + x + ", y=" + y + ", type=" + type + ", isWhite=" + isWhite + "]";
|
return "Piece [x=" + x + ", y=" + y + ", type=" + type + ", isWhite=" + isWhite + "]";
|
||||||
}
|
}
|
||||||
public boolean movePiece() {
|
private boolean hasMoved = false;
|
||||||
boolean moved = false;
|
|
||||||
return moved;
|
public boolean hasMoved() {
|
||||||
|
return hasMoved;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMoved(boolean moved) {
|
||||||
|
this.hasMoved = moved;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue