public boolean isValidMovePrefix(Move otherMove) { Piece otherPiece = otherMove.getPiece(); if (otherPiece.getPieceColor() != piece.getPieceColor() || otherMove.getPieceColumn() != pieceColumn || otherMove.getPieceRow() != pieceRow) { return false; } Iterator<ChessboardPosition> it = steps.iterator(); for (ChessboardPosition cp : otherMove.getSteps()) { if (!it.hasNext() || !cp.equals(it.next())) { return false; } } return true; }
public void doMove(Chessboard chessboard) { for (ChessboardPosition chessboardPosition : steps) { int rowDirection = Integer.signum(chessboardPosition.getRow() - this.pieceRow); int columnDirection = Integer.signum(chessboardPosition.getColumn() - this.pieceColumn); while (chessboardPosition.getRow() != this.pieceRow) { chessboard.capture(pieceRow, pieceColumn); pieceRow += rowDirection; pieceColumn += columnDirection; } chessboard.movePiece(pieceRow, pieceColumn, piece); } if (piece instanceof Pawn && ((piece.getPieceColor().equals(PieceColor.WHITE) && pieceRow == Chessboard.CHESSBOARD_SIZE - 1) || (piece.getPieceColor().equals(PieceColor.BLACK) && pieceRow == 0))) { piece = new King(piece.getPieceColor()); chessboard.movePiece(pieceRow, pieceColumn, piece); // System.out.println("New king!"); } }
private JLabel determinePiece(Piece piece) throws IOException { if (piece.getPieceColor() == PieceColor.WHITE) { switch (piece.getPieceType().name()) { case ("KING"): JLabel wKing = new JLabel(new ImageIcon(ImageIO.read(new File("art/wKing.png")))); wKing.setSize(new Dimension(64, 64)); return wKing; case ("QUEEN"): JLabel wQueen = new JLabel(new ImageIcon(ImageIO.read(new File("art/wQueen.png")))); wQueen.setSize(new Dimension(64, 64)); return wQueen; case ("BISHOP"): JLabel wBishop = new JLabel(new ImageIcon(ImageIO.read(new File("art/wBishop.png")))); wBishop.setSize(new Dimension(64, 64)); return wBishop; case ("KNIGHT"): JLabel wKnight = new JLabel(new ImageIcon(ImageIO.read(new File("art/wKnight.png")))); wKnight.setSize(new Dimension(64, 64)); return wKnight; case ("ROOK"): JLabel wRook = new JLabel(new ImageIcon(ImageIO.read(new File("art/wRook.png")))); wRook.setSize(new Dimension(64, 64)); return wRook; case ("PAWN"): JLabel wPawn = new JLabel(new ImageIcon(ImageIO.read(new File("art/wPawn.png")))); wPawn.setSize(new Dimension(64, 64)); return wPawn; default: throw new IllegalArgumentException(); } } else { switch (piece.getPieceType().name()) { case ("KING"): JLabel bKing = new JLabel(new ImageIcon(ImageIO.read(new File("art/bKing.png")))); bKing.setSize(new Dimension(64, 64)); return bKing; case ("QUEEN"): JLabel bQueen = new JLabel(new ImageIcon(ImageIO.read(new File("art/bQueen.png")))); bQueen.setSize(new Dimension(64, 64)); return bQueen; case ("BISHOP"): JLabel bBishop = new JLabel(new ImageIcon(ImageIO.read(new File("art/bBishop.png")))); bBishop.setSize(new Dimension(64, 64)); return bBishop; case ("KNIGHT"): JLabel bKnight = new JLabel(new ImageIcon(ImageIO.read(new File("art/bKnight.png")))); bKnight.setSize(new Dimension(64, 64)); return bKnight; case ("ROOK"): JLabel bRook = new JLabel(new ImageIcon(ImageIO.read(new File("art/bRook.png")))); bRook.setSize(new Dimension(64, 64)); return bRook; case ("PAWN"): JLabel bPawn = new JLabel(new ImageIcon(ImageIO.read(new File("art/bPawn.png")))); bPawn.setSize(new Dimension(64, 64)); return bPawn; default: throw new IllegalArgumentException(); } } }