Esempio n. 1
0
 /** Test of isWhite method, of class Piece. */
 @Test
 public void testIsWhite() {
   System.out.println("isWhite");
   assertEquals(false, Piece.isWhite(Piece.BBISHOP));
   assertEquals(true, Piece.isWhite(Piece.WBISHOP));
   assertEquals(true, Piece.isWhite(Piece.WKING));
   assertEquals(false, Piece.isWhite(Piece.BKING));
 }
Esempio n. 2
0
 /** Create an ascii representation of a position. */
 public static final String asciiBoard(Position pos) {
   StringBuilder ret = new StringBuilder(400);
   String nl = String.format("%n");
   ret.append("    +----+----+----+----+----+----+----+----+");
   ret.append(nl);
   for (int y = 7; y >= 0; y--) {
     ret.append("    |");
     for (int x = 0; x < 8; x++) {
       ret.append(' ');
       int p = pos.getPiece(Position.getSquare(x, y));
       if (p == Piece.EMPTY) {
         boolean dark = Position.darkSquare(x, y);
         ret.append(dark ? ".. |" : "   |");
       } else {
         ret.append(Piece.isWhite(p) ? ' ' : '*');
         String pieceName = pieceToChar(p);
         if (pieceName.length() == 0) pieceName = "P";
         ret.append(pieceName);
         ret.append(" |");
       }
     }
     ret.append(nl);
     ret.append("    +----+----+----+----+----+----+----+----+");
     ret.append(nl);
   }
   return ret.toString();
 }
Esempio n. 3
0
  private List<Square> validMovesForPawn(Square square) {
    List<Square> validMoves = new ArrayList<Square>();

    // Regular moves, 1 or 2 up or down depending on color
    Piece piece = square.getPiece();
    if (piece.isWhite()) {
      int movesUp = piece.movesUp();
      if (square.containsPawnOnStartingRow()) movesUp += 1;
      validMoves.addAll(validMovesForSquareInDirection(square, movesUp, 1, 0, 0, 0));
    } else {
      int movesDown = piece.movesDown();
      if (square.containsPawnOnStartingRow()) movesDown += 1;
      validMoves.addAll(validMovesForSquareInDirection(square, movesDown, 0, 0, 1, 0));
    }

    // Attacking move
    int rowColPairs[][] = {{-1, -1}, {-1, 1}};
    for (int i = 0; i < rowColPairs.length; i++) {
      int row = square.Row + rowColPairs[i][0];
      int col = square.Col + rowColPairs[i][1];
      if (rowAndColAreWithinBounds(row, col)) {
        Square s = Board[row][col];
        if (s.isOccupiedByPieceOfColor(square.getPiece().oppositeColor())) validMoves.add(s);
      }
    }

    return validMoves;
  }
Esempio n. 4
0
 private void addPieceAndSquareToPieceLocations(Piece piece, Square squareToAdd) {
   HashMap<Piece, ArrayList<Square>> PieceLocations =
       piece.isWhite() ? WhitePieceLocations : BlackPieceLocations;
   ArrayList<Square> pieceLocations = PieceLocations.get(piece);
   if (pieceLocations == null) pieceLocations = new ArrayList<Square>();
   pieceLocations.add(squareToAdd);
   PieceLocations.put(piece, pieceLocations);
 }
Esempio n. 5
0
 private void removePieceAndSquareFromPieceLocations(Piece piece, Square squareToRemove) {
   if (piece == null) return;
   HashMap<Piece, ArrayList<Square>> PieceLocations =
       piece.isWhite() ? WhitePieceLocations : BlackPieceLocations;
   ArrayList<Square> squares = PieceLocations.get(piece);
   if (squares == null) return;
   Iterator<Square> i = squares.iterator();
   while (i.hasNext()) {
     Square s = i.next();
     if (s.equals(squareToRemove)) {
       i.remove();
       break;
     }
   }
 }