diff --git a/OOP_1A2_Project/src/backend/Board.java b/OOP_1A2_Project/src/backend/Board.java index 56d84c5..47c513d 100644 --- a/OOP_1A2_Project/src/backend/Board.java +++ b/OOP_1A2_Project/src/backend/Board.java @@ -34,7 +34,7 @@ public class Board { return isWhiteTurn; } - public void setPiece(boolean isWhite, PieceType type, int x, int y) { + public void setPiece(boolean isWhite, PieceType type, int x, int y) { for (int i = 0; i < pieces.size(); i++) { Piece p = pieces.get(i); if (p.getX() == x && p.getY() == y) { @@ -43,7 +43,7 @@ public class Board { } } Piece newPiece = new Piece( x, y, type,isWhite); - pieces.add(newPiece); + pieces.add(newPiece); } public void populateBoard() { @@ -92,36 +92,69 @@ public class Board { } public String toString() { - String result = ""; - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - char c = ' '; - for (Piece p : pieces) { - if (p.getX() == x && p.getY() == y) { - if(p.isWhite() == true) { - c = 'W'; - String letter =p.getType().name(); - c += letter.charAt(0); - } - if(p.isWhite() == false) { - c = 'B'; - String letter =p.getType().name(); - c += letter.charAt(0); - } - } - } - result += c + " "; - } - result += "\n"; + //TODO + return ""; + } + + public ArrayList getPieces() { + ArrayList result = new ArrayList<>(); + for (Piece p : this.pieces) { + result.add(p); } 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) { - - + 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..94b6eb3 100644 --- a/OOP_1A2_Project/src/backend/Piece.java +++ b/OOP_1A2_Project/src/backend/Piece.java @@ -28,4 +28,9 @@ 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