From c2e98386a8a11a4bded4c5a7827ac1f02c00cabc Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 18:14:48 +0200 Subject: [PATCH 01/10] Add ChessEngine skeleton and integrate chesslib dependency --- schach/pom.xml | 24 +++++++++++++++---- .../informatik/chess/main/Main.java | 4 ---- .../informatik/chess/model/ChessEngine.java | 8 ++++++- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/schach/pom.xml b/schach/pom.xml index af8a653..7956515 100644 --- a/schach/pom.xml +++ b/schach/pom.xml @@ -1,7 +1,8 @@ - + 4.0.0 de.hs-mannheim.informatik.schach @@ -10,7 +11,6 @@ schach A simple schach. - http://www.example.com @@ -19,16 +19,31 @@ 8 + + + jitpack.io + https://jitpack.io + + + + + + com.github.bhlangonijr + chesslib + 1.3.4 + + junit junit 3.8.1 + test - + maven-clean-plugin @@ -42,7 +57,6 @@ maven-project-info-reports-plugin 3.6.1 - maven-resources-plugin 3.3.1 diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java index fe97eeb..1f8f26f 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java @@ -1,9 +1,5 @@ package de.hs_mannheim.informatik.chess.main; -/** - * Hello world! - * - */ public class Main { public static void main( String[] args ) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index ecb125e..981a79d 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -1,5 +1,11 @@ package de.hs_mannheim.informatik.chess.model; -public class ChessEngine { +import com.github.bhlangonijr.chesslib.Board; +public class ChessEngine { + private Board board; + + public ChessEngine() { + board = new Board(); + } } From cf0a8173b49560d40f402dd8f16460ce45c29773 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 18:29:02 +0200 Subject: [PATCH 02/10] New move method in ChessEngine --- .../informatik/chess/model/ChessEngine.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index 981a79d..e787412 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -1,6 +1,8 @@ package de.hs_mannheim.informatik.chess.model; import com.github.bhlangonijr.chesslib.Board; +import com.github.bhlangonijr.chesslib.Square; +import com.github.bhlangonijr.chesslib.move.Move; public class ChessEngine { private Board board; @@ -8,4 +10,16 @@ public class ChessEngine { public ChessEngine() { board = new Board(); } + + public boolean move(String from, String to) { + Move move = new Move(Square.valueOf(from.toUpperCase()), Square.valueOf(to.toUpperCase())); + if (board.legalMoves().contains(move)) { + board.doMove(move); + return true; + } else { + return false; + } + } + + } From fe8c1a65d9b23d79183309438fb8fcf7d9eab597 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 18:55:35 +0200 Subject: [PATCH 03/10] Add getLegalDestinations() method to ChessEngine --- .../informatik/chess/model/ChessEngine.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index e787412..a0cd841 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -1,5 +1,8 @@ package de.hs_mannheim.informatik.chess.model; +import java.util.ArrayList; +import java.util.List; + import com.github.bhlangonijr.chesslib.Board; import com.github.bhlangonijr.chesslib.Square; import com.github.bhlangonijr.chesslib.move.Move; @@ -21,5 +24,16 @@ public class ChessEngine { } } + public List getLegalDestinations(String from) { + List destinations = new ArrayList<>(); + Square fromSq = Square.valueOf(from.toUpperCase()); + for (Move move : board.legalMoves()) { + if (move.getFrom().equals(fromSq)) { + destinations.add(move.getTo().toString()); // z.B. "E4" + } + } + return destinations; + } + } From 88f5bdc929d504843575ca37f2bdab243e293f61 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 19:10:51 +0200 Subject: [PATCH 04/10] Add getPieceAt() method to ChessEngine --- .../de/hs_mannheim/informatik/chess/model/ChessEngine.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index a0cd841..a3730de 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.github.bhlangonijr.chesslib.Board; +import com.github.bhlangonijr.chesslib.Piece; import com.github.bhlangonijr.chesslib.Square; import com.github.bhlangonijr.chesslib.move.Move; @@ -35,5 +36,10 @@ public class ChessEngine { return destinations; } + public String getPieceAt(String square) { + Piece piece = board.getPiece(Square.valueOf(square.toUpperCase())); + return piece.toString(); // z.B. "WHITE_PAWN" + } + } From 0e1aec5193cb872a550c88daf8835c2b299fc663 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 19:18:07 +0200 Subject: [PATCH 05/10] Add new pieceToUnicode() method to ChessEngine --- .../informatik/chess/model/ChessEngine.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index a3730de..c6570e5 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -41,5 +41,23 @@ public class ChessEngine { return piece.toString(); // z.B. "WHITE_PAWN" } + private String pieceToUnicode(Piece piece) { + switch (piece) { + case WHITE_KING: return "♔"; + case WHITE_QUEEN: return "♕"; + case WHITE_ROOK: return "♖"; + case WHITE_BISHOP: return "♗"; + case WHITE_KNIGHT: return "♘"; + case WHITE_PAWN: return "♙"; + case BLACK_KING: return "♚"; + case BLACK_QUEEN: return "♛"; + case BLACK_ROOK: return "♜"; + case BLACK_BISHOP: return "♝"; + case BLACK_KNIGHT: return "♞"; + case BLACK_PAWN: return "♟"; + default: return " "; + } + } + } From 892e9947396f4c797c443ddfe6f178c08c4bf3b9 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 19:32:05 +0200 Subject: [PATCH 06/10] Add getBoardUnicode() method to ChessEngine --- .../informatik/chess/model/ChessEngine.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index c6570e5..a42061b 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -41,6 +41,18 @@ public class ChessEngine { return piece.toString(); // z.B. "WHITE_PAWN" } + public String[][] getBoardUnicode() { + String[][] unicodeBoard = new String[8][8]; + for (int rank = 8; rank >= 1; rank--) { + for (int file = 0; file < 8; file++) { + Square square = Square.valueOf("" + (char)('A' + file) + rank); + Piece piece = board.getPiece(square); + unicodeBoard[8-rank][file] = pieceToUnicode(piece); + } + } + return unicodeBoard; + } + private String pieceToUnicode(Piece piece) { switch (piece) { case WHITE_KING: return "♔"; @@ -59,5 +71,4 @@ public class ChessEngine { } } - } From 3dade8ce842093994706fc34d2fc4c3f22b363a1 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 19:33:34 +0200 Subject: [PATCH 07/10] Add isMated() method to ChessEngine --- .../de/hs_mannheim/informatik/chess/model/ChessEngine.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index a42061b..c4bb604 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -71,4 +71,8 @@ public class ChessEngine { } } + public boolean isMated() { + return board.isMated(); + } + } From 5a4b3ff63e96bde1acc1e1a44c2c5aa19421672d Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 19:35:28 +0200 Subject: [PATCH 08/10] Add isStalemate() method to ChessEngine --- .../de/hs_mannheim/informatik/chess/model/ChessEngine.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index c4bb604..3408ccf 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -75,4 +75,7 @@ public class ChessEngine { return board.isMated(); } + public boolean isStalemate() { + return board.isStaleMate(); + } } From c7a3c9918ffca55d661a5b79c361b9d242971975 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 19:36:36 +0200 Subject: [PATCH 09/10] Add isDraw() method to ChessEngine --- .../de/hs_mannheim/informatik/chess/model/ChessEngine.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index 3408ccf..fef4bb0 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -78,4 +78,9 @@ public class ChessEngine { public boolean isStalemate() { return board.isStaleMate(); } + + public boolean isDraw() { + return board.isDraw(); + } + } From a70a9a3eb36edd75023c9d425f2eed89c4963341 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 18 Jun 2025 19:37:22 +0200 Subject: [PATCH 10/10] Add getCurrentPlayer() method to ChessEngine --- .../de/hs_mannheim/informatik/chess/model/ChessEngine.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java index fef4bb0..e213948 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/model/ChessEngine.java @@ -83,4 +83,8 @@ public class ChessEngine { return board.isDraw(); } + public String getCurrentPlayer() { + return board.getSideToMove().toString(); // "WHITE" oder "BLACK" + } + }