@Test public void threatTest() { Square square = this.board.getSquare('e', 1); square.setPiece(wPawn); SquareList squares = square.getPiece().whatThreats(board, square); SquareList list = new SquareList(); list.add(this.board.getSquare('d', 2)); list.add(this.board.getSquare('f', 2)); boolean ok = true; for (Square sqr : list.getList()) { if (!squares.contains(sqr)) { ok = false; } } assertEquals(true, squares.size() == list.size()); square = this.board.getSquare('e', 8); square.setPiece(bPawn); squares = square.getPiece().whatThreats(board, square); list = new SquareList(); list.add(this.board.getSquare('d', 7)); list.add(this.board.getSquare('f', 7)); for (Square sqr : list.getList()) { if (!squares.contains(sqr)) { ok = false; } } assertEquals(true, ok); assertEquals(true, squares.size() == list.size()); }
/** * Method checks is it possible to castle long side. * * @param board is the current chess board. * @param from where the king is now. * @return true if it's possible. */ private boolean checkLong(Board board, Square from) { int n = from.getN(); if (board.getSquare('a', n).getPiece() != null && board.getSquare('a', n).getPiece().toString().equals("R")) { SquareList needToCheck; boolean isOK; if (this.getColor() == 'w') { needToCheck = board.getBlackThreats(); } else { needToCheck = board.getWhiteThreats(); } if (!needToCheck.contains(board.getSquare('d', n)) && !needToCheck.contains(board.getSquare('c', n)) && board.getSquare('d', n).getPiece() == null && board.getSquare('c', n).getPiece() == null) { isOK = true; } else { isOK = false; } if (board.getSquare('a', n).getPiece().notMoved() && isOK) { return true; } } return false; }
/** * Method removes squares where this king can't move. * * @param squares squares what king threats * @param danger squares where king can't move * @param mySquares * @param remove squares that needs to remove */ private void removeSquares( SquareList squares, SquareList danger, SquareList mySquares, SquareList remove) { for (Square square : squares.getList()) { if (danger.contains(square) || mySquares.contains(square)) { remove.add(square); } } for (Square square : remove.getList()) { squares.remove(square); } }