From dcf9bd7df7931f86be4c87114f4d71803b505bb1 Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Wed, 15 Mar 2023 23:58:23 -0700 Subject: [PATCH 1/4] Make pawn promote from captures --- src/Pawn.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Pawn.java b/src/Pawn.java index 5058adc..8974601 100644 --- a/src/Pawn.java +++ b/src/Pawn.java @@ -13,9 +13,7 @@ public class Pawn extends Piece { ArrayList possibleMoves = new ArrayList<>(); if (this.black) { if (board.get(position.x, position.y + 1) == null) { - Move oneForward = new Move(position, new BoardCoordinate(position.x, position.y + 1)); - oneForward.isPromotion = position.y + 1 == Board.BOARD_SIZE - 1; - possibleMoves.add(oneForward); + possibleMoves.add(new Move(position, new BoardCoordinate(position.x, position.y + 1))); if (!moved && board.get(position.x, position.y + 2) == null) { possibleMoves.add(new Move(position, new BoardCoordinate(position.x, position.y + 2))); } @@ -26,12 +24,10 @@ public class Pawn extends Piece { if (board.get(position.x + 1, position.y + 1) != null) { possibleMoves.add(new Move(position, new BoardCoordinate(position.x + 1,position.y + 1))); } - + for (Move move : possibleMoves) move.isPromotion = position.y + 1 == 0; } else { if (board.get(position.x, position.y - 1) == null) { - Move oneForward = new Move(position, new BoardCoordinate(position.x, position.y - 1)); - oneForward.isPromotion = position.y - 1 == 0; - possibleMoves.add(oneForward); + possibleMoves.add(new Move(position, new BoardCoordinate(position.x, position.y - 1))); if (!moved && board.get(position.x, position.y - 2) == null) { possibleMoves.add(new Move(position, new BoardCoordinate(position.x, position.y - 2))); } @@ -42,6 +38,7 @@ public class Pawn extends Piece { if (board.get(position.x + 1, position.y - 1) != null) { possibleMoves.add(new Move(position, new BoardCoordinate(position.x + 1,position.y - 1))); } + for (Move move : possibleMoves) move.isPromotion = position.y - 1 == 0; } return possibleMoves; } From 446006cf4a0285eb78a737247eba378b086634a5 Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Wed, 15 Mar 2023 23:59:06 -0700 Subject: [PATCH 2/4] Shuffle AI move set to prevent moving back and forth --- src/ChessAI.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ChessAI.java b/src/ChessAI.java index bf20af5..9d3c1cd 100644 --- a/src/ChessAI.java +++ b/src/ChessAI.java @@ -1,3 +1,6 @@ +import java.util.ArrayList; +import java.util.Collections; + public class ChessAI { private static final int MAX_DEPTH = 3; @@ -5,7 +8,9 @@ public class ChessAI { int bestScore = Integer.MIN_VALUE; Move bestMove = null; - for (Move move : board.getAllLegalMoves(true)) { + ArrayList legalMoves = board.getAllLegalMoves(true); + Collections.shuffle(legalMoves); + for (Move move : legalMoves) { board.move(move); int score = minimax(board, MAX_DEPTH, Integer.MIN_VALUE, Integer.MAX_VALUE, false); board.undoMove(); From e178d88742469f70cc4168b56ab1d372f5d7287d Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Thu, 16 Mar 2023 00:08:00 -0700 Subject: [PATCH 3/4] Add stalemate text --- src/Board.java | 9 +++- stalemate.png | Bin 0 -> 23584 bytes stalemate.svg | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ you-lose.svg | 10 ++--- 4 files changed, 130 insertions(+), 6 deletions(-) create mode 100644 stalemate.png create mode 100644 stalemate.svg diff --git a/src/Board.java b/src/Board.java index e04fd3b..c89d40c 100644 --- a/src/Board.java +++ b/src/Board.java @@ -30,9 +30,11 @@ public class Board { ArrayList legalMoves = null; Stack moveHistory; public boolean isGameOver; + public boolean isStalemate; public boolean victor; Image youWin; Image youLose; + Image stalemate; public Board() { moveHistory = new Stack<>(); @@ -41,6 +43,7 @@ public class Board { panel = new DrawingPanel(DIMENSION, DIMENSION); youWin = panel.loadImage("you-win.png"); youLose = panel.loadImage("you-lose.png"); + stalemate = panel.loadImage("stalemate.png"); graphics = panel.getGraphics(); // Connect up event handlers @@ -160,6 +163,7 @@ public class Board { void handleMouseDown(int x, int y) { if (isGameOver) { isGameOver = false; + isStalemate = false; setup(); return; } @@ -231,6 +235,9 @@ public class Board { } undoMove(); } + } else if (getAllLegalMoves(movedPiece.black).isEmpty()) { + isGameOver = true; + isStalemate = true; } victor = movedPiece.black; } @@ -284,7 +291,7 @@ public class Board { // Draw game over text if (isGameOver) { - graphics.drawImage(victor ? youLose : youWin, 0, 0, panel); + graphics.drawImage(isStalemate ? stalemate : (victor ? youLose : youWin), 0, 0, panel); } } diff --git a/stalemate.png b/stalemate.png new file mode 100644 index 0000000000000000000000000000000000000000..895fc0215a0179284dc64577deb71fca75e283a8 GIT binary patch literal 23584 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 + + + + + + + + + + + + + + + + + STALEMATE + click to play again + + diff --git a/you-lose.svg b/you-lose.svg index e6eee75..eb7c42b 100644 --- a/you-lose.svg +++ b/you-lose.svg @@ -8,7 +8,7 @@ version="1.1" id="svg5" sodipodi:docname="you-lose.svg" - inkscape:export-filename="you-win.png" + inkscape:export-filename="you-lose.png" inkscape:export-xdpi="25.4" inkscape:export-ydpi="25.4" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" @@ -28,8 +28,8 @@ inkscape:document-units="mm" showgrid="false" inkscape:zoom="0.3901936" - inkscape:cx="1232.7214" - inkscape:cy="1014.8808" + inkscape:cx="786.78891" + inkscape:cy="981.56402" inkscape:window-width="1920" inkscape:window-height="1048" inkscape:window-x="1920" @@ -99,9 +99,9 @@ style="font-size:341.333px;white-space:pre;shape-inside:url(#rect952);display:inline;fill:#3d3d3d;fill-opacity:1;filter:url(#filter1272)">YOU LOSE + id="tspan1821">YOU LOSE Date: Thu, 16 Mar 2023 00:17:12 -0700 Subject: [PATCH 4/4] Fix blocking checkmate --- src/Board.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Board.java b/src/Board.java index c89d40c..0722d8c 100644 --- a/src/Board.java +++ b/src/Board.java @@ -227,13 +227,10 @@ public class Board { if (inCheck) { isGameOver = true; for (Move move : getAllLegalMoves(!movedPiece.black)) { - move(move); if (!oppositeKing.isInCheck(move, this)) { isGameOver = false; - undoMove(); break; } - undoMove(); } } else if (getAllLegalMoves(movedPiece.black).isEmpty()) { isGameOver = true;