package chess.ai; import chess.model.Color; import chess.model.Piece; import chess.model.PieceVisitor; import chess.model.pieces.Bishop; import chess.model.pieces.King; import chess.model.pieces.Knight; import chess.model.pieces.Pawn; import chess.model.pieces.Queen; import chess.model.pieces.Rook; public class PieceCost implements PieceVisitor { private final Color player; public static final float BISHOP = 30; public static final float KING = 900; public static final float KNIGHT = 30; public static final float PAWN = 10; public static final float QUEEN = 90; public static final float ROOK = 50; public PieceCost(Color color) { this.player = color; } public float getCost(Piece piece) { if (piece == null) return 0; float cost = visit(piece); if (piece.getColor() != player) cost = -cost; return cost; } @Override public Float visitPiece(Bishop bishop) { return BISHOP; } @Override public Float visitPiece(King king) { return KING; } @Override public Float visitPiece(Knight knight) { return KNIGHT; } @Override public Float visitPiece(Pawn pawn) { return PAWN; } @Override public Float visitPiece(Queen queen) { return QUEEN; } @Override public Float visitPiece(Rook rook) { return ROOK; } }