예제 #1
0
  @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());
  }
예제 #2
0
파일: King.java 프로젝트: Janikaka/Chess
 /**
  * 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;
 }
예제 #3
0
파일: King.java 프로젝트: Janikaka/Chess
 /**
  * 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);
   }
 }