61 lines
1.0 KiB
Java
61 lines
1.0 KiB
Java
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<Integer> {
|
|
|
|
private final Color player;
|
|
|
|
public PieceCost(Color color) {
|
|
this.player = color;
|
|
}
|
|
|
|
public int getCost(Piece piece) {
|
|
if (piece == null)
|
|
return 0;
|
|
int cost = visit(piece);
|
|
if (piece.getColor() == player)
|
|
cost = -cost;
|
|
return cost;
|
|
}
|
|
|
|
@Override
|
|
public Integer visitPiece(Bishop bishop) {
|
|
return 3;
|
|
}
|
|
|
|
@Override
|
|
public Integer visitPiece(King king) {
|
|
return 90;
|
|
}
|
|
|
|
@Override
|
|
public Integer visitPiece(Knight knight) {
|
|
return 3;
|
|
}
|
|
|
|
@Override
|
|
public Integer visitPiece(Pawn pawn) {
|
|
return 1;
|
|
}
|
|
|
|
@Override
|
|
public Integer visitPiece(Queen queen) {
|
|
return 9;
|
|
}
|
|
|
|
@Override
|
|
public Integer visitPiece(Rook rook) {
|
|
return 5;
|
|
}
|
|
|
|
}
|