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 8bcd89d975
commit 5abc51688b
4 changed files with 17 additions and 11 deletions

View File

@ -168,8 +168,6 @@ public class Board implements Cloneable {
// Move the rook // Move the rook
Move rookMove = move.dest.x == 6 ? new Move(5, move.pos.y, 7, move.pos.y) // Kingside 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 : new Move(3, move.pos.y, 0, move.pos.y); // Queenside
// Move the rook
setDest(rookMove, getPos(rookMove)); setDest(rookMove, getPos(rookMove));
setPos(rookMove, null); setPos(rookMove, null);
@ -278,7 +276,8 @@ public class Board implements Cloneable {
public GameState getGameEventType(Color color) { public GameState getGameEventType(Color color) {
return checkCheck(color) ? checkCheckmate(color) ? GameState.CHECKMATE : GameState.CHECK 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); blackCastling.put(Type.QUEEN, true);
castlingRights.put(Color.WHITE, whiteCastling); castlingRights.put(Color.WHITE, whiteCastling);
castlingRights.put(Color.BLACK, blackCastling); 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 @Override
public Object clone() { public Object clone() {
Log log = null; Log log = null;

View File

@ -24,10 +24,10 @@ public class MoveProcessor implements Callable<ProcessingResult> {
private Move bestMove; private Move bestMove;
public MoveProcessor(Board board, List<Move> rootMoves, Color color, int maxDepth, int alphaBetaThreshold) { public MoveProcessor(Board board, List<Move> rootMoves, Color color, int maxDepth, int alphaBetaThreshold) {
this.board = board; this.board = board;
this.rootMoves = rootMoves; this.rootMoves = rootMoves;
this.color = color; this.color = color;
this.maxDepth = maxDepth; this.maxDepth = maxDepth;
this.alphaBetaThreshold = alphaBetaThreshold; this.alphaBetaThreshold = alphaBetaThreshold;
} }
@ -41,9 +41,9 @@ public class MoveProcessor implements Callable<ProcessingResult> {
int bestValue = Integer.MIN_VALUE; int bestValue = Integer.MIN_VALUE;
for (Move move : moves) { for (Move move : moves) {
board.move(move); board.move(move);
int teamValue = board.evaluate(color); int teamValue = board.evaluate(color);
int enemyValue = board.evaluate(color.opposite()); int enemyValue = board.evaluate(color.opposite());
int valueChange = teamValue - enemyValue; int valueChange = teamValue - enemyValue;
if (depth < maxDepth && valueChange >= alphaBetaThreshold) if (depth < maxDepth && valueChange >= alphaBetaThreshold)
valueChange -= miniMax(board, board.getMoves(color.opposite()), color.opposite(), depth + 1); valueChange -= miniMax(board, board.getMoves(color.opposite()), color.opposite(), depth + 1);

View File

@ -55,7 +55,7 @@ public class MainWindow {
*/ */
private void initialize() { private void initialize() {
mframe = new JFrame("Chess by Kai S. K. Engelbart"); mframe = new JFrame("Chess by Kai S. K. Engelbart");
mframe.setResizable(true); mframe.setResizable(false);
mframe.setBounds(100, 100, 494, 565); mframe.setBounds(100, 100, 494, 565);
mframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);