Added log resetting, disabled resizing in MainFrame
This commit is contained in:
parent
c0479b88b6
commit
20ccb2aeef
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user