/** 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)); }
/** 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(); }
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; }
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); }
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; } } }