the rest ig that didn't commit?
This commit is contained in:
parent
fb2ab062a8
commit
7fd58ec396
|
|
@ -0,0 +1,73 @@
|
|||
package backend;
|
||||
|
||||
public class chessRulesCheck {
|
||||
|
||||
//The basic rules needed for CASTLING!!!!!!!!! useful for the rest of course ;)
|
||||
|
||||
|
||||
public boolean isInCheck (Board board, boolean isWhite){ //is under attack + is king
|
||||
|
||||
int kx = -1, ky = -1;
|
||||
|
||||
for (Piece p : board.getPieces()) {
|
||||
if (p.getType() == PieceType.King && p.isWhite() == isWhite) {
|
||||
kx = p.getX();
|
||||
ky = p.getY();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (kx < 0)
|
||||
return false;
|
||||
|
||||
for (Piece p : board.getPieces()) {
|
||||
if (p.isWhite() == isWhite) continue;
|
||||
for (Board.Position pos : board.findMoves(p)) {
|
||||
if (pos.x == kx && pos.y == ky)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public boolean getsChecked (Board board, int x, int y, boolean byWhite){
|
||||
for (Piece p : board.getPieces()) {
|
||||
if (p.isWhite() != byWhite) continue;
|
||||
for (Board.Position pos : board.findMoves(p)) {
|
||||
if (pos.x == x && pos.y == y)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean nothingInBetween (Board board, boolean isWhite, boolean kingSide) {
|
||||
int rank = isWhite ? 7 : 0;
|
||||
int kx = 4;
|
||||
int rx = kingSide ? 7 : 0;
|
||||
int start = Math.min(kx, rx) + 1;
|
||||
int end = Math.max(kx, rx) - 1;
|
||||
for (int x = start; x <= end; x++) {
|
||||
if (board.getPieceAt(x, rank) != null)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
public boolean hasMoved (Board board, boolean isWhite, boolean kingSide) {
|
||||
Piece king = null, rook = null;
|
||||
for (Piece p : board.getPieces()) {
|
||||
if (p.getType() == PieceType.King && p.isWhite() == isWhite) king = p;
|
||||
if (p.getType() == PieceType.Rook && p.isWhite() == isWhite) {
|
||||
if (kingSide && p.getX() == 7) rook = p;
|
||||
if (!kingSide && p.getX() == 0) rook = p;
|
||||
}
|
||||
}
|
||||
if (king == null || rook == null) return true;
|
||||
return king.hasMoved() || rook.hasMoved();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue