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