Added log resetting, disabled resizing in MainFrame
This commit is contained in:
parent
0dcf0842e8
commit
98b1ed3192
@ -168,8 +168,6 @@ public class Board implements Cloneable {
|
||||
// Move the rook
|
||||
Move rookMove = move.dest.x == 6 ? new Move(5, move.pos.y, 7, move.pos.y) // Kingside
|
||||
: new Move(3, move.pos.y, 0, move.pos.y); // Queenside
|
||||
|
||||
// Move the rook
|
||||
setDest(rookMove, getPos(rookMove));
|
||||
setPos(rookMove, null);
|
||||
|
||||
@ -278,7 +276,8 @@ public class Board implements Cloneable {
|
||||
|
||||
public GameState getGameEventType(Color color) {
|
||||
return checkCheck(color) ? checkCheckmate(color) ? GameState.CHECKMATE : GameState.CHECK
|
||||
: getMoves(color).isEmpty() ? GameState.STALEMATE : GameState.NORMAL;
|
||||
: getMoves(color).isEmpty() || log.getLast().halfmoveClock >= 50 ? GameState.STALEMATE
|
||||
: GameState.NORMAL;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -369,6 +368,8 @@ public class Board implements Cloneable {
|
||||
blackCastling.put(Type.QUEEN, true);
|
||||
castlingRights.put(Color.WHITE, whiteCastling);
|
||||
castlingRights.put(Color.BLACK, blackCastling);
|
||||
|
||||
log.reset();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -49,6 +49,11 @@ public class Log implements Cloneable {
|
||||
}
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
moves.clear();
|
||||
activeColor = Color.WHITE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object clone() {
|
||||
Log log = null;
|
||||
|
@ -24,10 +24,10 @@ public class MoveProcessor implements Callable<ProcessingResult> {
|
||||
private Move bestMove;
|
||||
|
||||
public MoveProcessor(Board board, List<Move> rootMoves, Color color, int maxDepth, int alphaBetaThreshold) {
|
||||
this.board = board;
|
||||
this.rootMoves = rootMoves;
|
||||
this.color = color;
|
||||
this.maxDepth = maxDepth;
|
||||
this.board = board;
|
||||
this.rootMoves = rootMoves;
|
||||
this.color = color;
|
||||
this.maxDepth = maxDepth;
|
||||
this.alphaBetaThreshold = alphaBetaThreshold;
|
||||
}
|
||||
|
||||
@ -41,9 +41,9 @@ public class MoveProcessor implements Callable<ProcessingResult> {
|
||||
int bestValue = Integer.MIN_VALUE;
|
||||
for (Move move : moves) {
|
||||
board.move(move);
|
||||
int teamValue = board.evaluate(color);
|
||||
int enemyValue = board.evaluate(color.opposite());
|
||||
int valueChange = teamValue - enemyValue;
|
||||
int teamValue = board.evaluate(color);
|
||||
int enemyValue = board.evaluate(color.opposite());
|
||||
int valueChange = teamValue - enemyValue;
|
||||
|
||||
if (depth < maxDepth && valueChange >= alphaBetaThreshold)
|
||||
valueChange -= miniMax(board, board.getMoves(color.opposite()), color.opposite(), depth + 1);
|
||||
|
@ -55,7 +55,7 @@ public class MainWindow {
|
||||
*/
|
||||
private void initialize() {
|
||||
mframe = new JFrame("Chess by Kai S. K. Engelbart");
|
||||
mframe.setResizable(true);
|
||||
mframe.setResizable(false);
|
||||
mframe.setBounds(100, 100, 494, 565);
|
||||
mframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
|
Reference in New Issue
Block a user