Added log resetting, disabled resizing in MainFrame

This commit is contained in:
Kai S. K. Engelbart 2019-07-25 21:38:49 +02:00
parent c0479b88b6
commit 20ccb2aeef
Signed by: kske
GPG Key ID: 8BEB13EC5DF7EF13
4 changed files with 17 additions and 11 deletions

View File

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

View File

@ -49,6 +49,11 @@ public class Log implements Cloneable {
}
}
public void reset() {
moves.clear();
activeColor = Color.WHITE;
}
@Override
public Object clone() {
Log log = null;

View File

@ -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);

View File

@ -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);