From 95aa5f0c34ded7248683ae03595d4c31fd3db0d3 Mon Sep 17 00:00:00 2001 From: eliot Date: Wed, 7 May 2025 16:19:08 +0200 Subject: [PATCH] added turn tracking variables, updated constructor, getTurnNumber, isTurnWhite, userTouch updated --- src/backend/Board.java | 48 ++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/backend/Board.java b/src/backend/Board.java index 78eae2a..d4b47a6 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -13,11 +13,15 @@ public class Board { private ArrayList pieces; private int selectedX = -1; // Tracks selected column (-1 = no selection) private int selectedY = -1; // Tracks selected row (-1 = no selection) + private int turnNumber = 0; // Starts at 0 (White's turn) + private boolean isWhiteTurn = true; // Track current player's turn public Board(int colNum, int lineNum) { this.colNum = colNum; - this.lineNum = lineNum; - this.pieces = new ArrayList<>(); + this.lineNum = lineNum; + this.pieces = new ArrayList<>(); + this.turnNumber = 0; // Initialize turn number + this.isWhiteTurn = true; // White starts first } @@ -32,13 +36,11 @@ public class Board { } public int getTurnNumber() { - //TODO - return 0; + return turnNumber; } public boolean isTurnWhite() { - //TODO - return false; + return isWhiteTurn; } public void setPiece(boolean isWhite, PieceType type, int x, int y) { @@ -143,37 +145,47 @@ public class Board { } public void userTouch(int x, int y) { - if (selectedX == -1) { - // No current selection: Check if there's a piece at (x, y) + if (selectedX == -1) { // No current selection + // Check if there's a piece at the clicked position for (Piece p : pieces) { if (p.getX() == x && p.getY() == y) { - selectedX = x; - selectedY = y; + // Only allow selection if it's the correct player's turn + if (p.isWhite() == isWhiteTurn) { + selectedX = x; + selectedY = y; + } return; } } - } else { - // Already selected: Move or unselect - if (x == selectedX && y == selectedY) { - // Unselect + } else { // Already have a selected piece + if (x == selectedX && y == selectedY) { // Clicked same position: unselect selectedX = -1; selectedY = -1; - } else { - // Move piece from (selectedX, selectedY) to (x, y) + } else { // Attempt to move Piece pieceToMove = null; + + // Find the selected piece for (Piece p : pieces) { if (p.getX() == selectedX && p.getY() == selectedY) { pieceToMove = p; break; } } + if (pieceToMove != null) { - // Remove target piece and move + // Remove any piece at target location pieces.removeIf(p -> p.getX() == x && p.getY() == y); + + // Update piece position pieceToMove.setX(x); pieceToMove.setY(y); + + // Advance game state + turnNumber++; + isWhiteTurn = !isWhiteTurn; } - // Unselect after move + + // Clear selection regardless of move success selectedX = -1; selectedY = -1; }