From ca414277ec4ec87ebcd6a6efcb1a79444fcdbcd8 Mon Sep 17 00:00:00 2001 From: mariettakazimierczak Date: Tue, 20 May 2025 19:22:18 +0200 Subject: [PATCH] auto player in progress --- src/backend/AutoPlayer.java | 30 ++++++++++++-- src/backend/Board.java | 79 +++++++++++++++++++++++++++++++++---- src/backend/Game.java | 13 ++++-- src/backend/MovePiece.java | 36 +++++++++-------- src/backend/Piece.java | 5 +++ 5 files changed, 133 insertions(+), 30 deletions(-) diff --git a/src/backend/AutoPlayer.java b/src/backend/AutoPlayer.java index a988a22..8262790 100644 --- a/src/backend/AutoPlayer.java +++ b/src/backend/AutoPlayer.java @@ -1,5 +1,9 @@ package backend; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + public class AutoPlayer { @@ -9,9 +13,29 @@ public class AutoPlayer { * @return */ public Move computeBestMove(Board board) { - - return null; + List allPossibleMoves = new ArrayList<>(); + boolean isWhiteTurn = board.isTurnWhite(); + + for (Piece piece : board.getPieces()) { + if (piece.isWhite() == isWhiteTurn) { + board.userTouch(piece.getX(), piece.getY()); // triggers highlighting + + for (int newX = 0; newX < board.getWidth(); newX++) { + for (int newY = 0; newY < board.getHeight(); newY++) { + if (board.isHighlighted(newX, newY)) { + allPossibleMoves.add(new Move(piece.getX(), piece.getY(), newX, newY, piece)); + } + } + } + } + } + + if (allPossibleMoves.isEmpty()) return null; + + Random rand = new Random(); + return allPossibleMoves.get(rand.nextInt(allPossibleMoves.size())); + } } -} + diff --git a/src/backend/Board.java b/src/backend/Board.java index 164a6d9..edf19af 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -308,10 +308,10 @@ public class Board { /* The following methods require more work ! */ - private void highlightedPossibleMoves(Piece piece) { + /*private void highlightedPossibleMoves(Piece piece) { highlightedSquares.clear(); highlightedSquares.addAll(MoveHighlighter.getPossibleMoves(piece, this)); - } + }*/ public boolean isHighlighted(int x, int y) { for(int i=0; i