From 238a74eed4b690b1eb668f443777cad7f3eb80bf Mon Sep 17 00:00:00 2001 From: cleme Date: Tue, 6 May 2025 14:22:18 +0200 Subject: [PATCH 1/2] usertouch --- OOP_1A2_Project/src/backend/Board.java | 50 ++++++++++++++++++++++++-- OOP_1A2_Project/src/backend/Piece.java | 4 +++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/OOP_1A2_Project/src/backend/Board.java b/OOP_1A2_Project/src/backend/Board.java index 78bc856..76fbd1e 100644 --- a/OOP_1A2_Project/src/backend/Board.java +++ b/OOP_1A2_Project/src/backend/Board.java @@ -103,12 +103,58 @@ public class Board { } return result; } + private Piece getPieceAt(int x, int y) { + for (Piece p : pieces) { + if (p.getX() == x && p.getY() == y) { + return p; + } + } + return null; + } + + private Integer selectedX = null; + private Integer selectedY = null; public void userTouch(int x, int y) { - //TODO - + Piece clickedPiece = getPieceAt(x, y); + + if (selectedX == null || selectedY == null) { + // No piece selected yet + if (clickedPiece != null && clickedPiece.isWhite() == isWhiteTurn) { + selectedX = x; + selectedY = y; + } + } else { + if (selectedX == x && selectedY == y) { + // Unselection + selectedX = null; + selectedY = null; + } else { + // Attempt to move + Piece selectedPiece = getPieceAt(selectedX, selectedY); + if (selectedPiece != null) { + // Remove captured piece (if any) + Piece toRemove = getPieceAt(x, y); + if (toRemove != null && toRemove.isWhite() != isWhiteTurn) { + pieces.remove(toRemove); + } + + // Move piece + selectedPiece.moveTo(x, y); + + // Advance turn + turnNumber++; + isWhiteTurn = !isWhiteTurn; + + // Unselect + selectedX = null; + selectedY = null; + } + } + } } + public boolean isSelected(int x, int y) { //TODO return false; diff --git a/OOP_1A2_Project/src/backend/Piece.java b/OOP_1A2_Project/src/backend/Piece.java index ea076d4..e377616 100644 --- a/OOP_1A2_Project/src/backend/Piece.java +++ b/OOP_1A2_Project/src/backend/Piece.java @@ -28,4 +28,8 @@ public class Piece { public boolean isWhite() { return isWhite; // Returns true if the piece is white, false if black } + public void moveTo(int x, int y) { + this.x = x; + this.y = y; + } } \ No newline at end of file From 6e547c1743d6509b4ba3baa21e9042aab0787f7e Mon Sep 17 00:00:00 2001 From: romca Date: Tue, 6 May 2025 14:32:00 +0200 Subject: [PATCH 2/2] isselected --- OOP_1A2_Project/src/backend/Board.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OOP_1A2_Project/src/backend/Board.java b/OOP_1A2_Project/src/backend/Board.java index 76fbd1e..552820d 100644 --- a/OOP_1A2_Project/src/backend/Board.java +++ b/OOP_1A2_Project/src/backend/Board.java @@ -157,7 +157,7 @@ public class Board { public boolean isSelected(int x, int y) { //TODO - return false; + return selectedX != null && selectedY != null && selectedX == x && selectedY == y; } /* saving-loading feature :*/