added turn tracking variables, updated constructor, getTurnNumber,

isTurnWhite, userTouch updated
This commit is contained in:
eliot 2025-05-07 16:19:08 +02:00
parent 2ec7d1da61
commit 95aa5f0c34
1 changed files with 30 additions and 18 deletions

View File

@ -13,11 +13,15 @@ public class Board {
private ArrayList<Piece> pieces; private ArrayList<Piece> pieces;
private int selectedX = -1; // Tracks selected column (-1 = no selection) private int selectedX = -1; // Tracks selected column (-1 = no selection)
private int selectedY = -1; // Tracks selected row (-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) { public Board(int colNum, int lineNum) {
this.colNum = colNum; this.colNum = colNum;
this.lineNum = lineNum; this.lineNum = lineNum;
this.pieces = new ArrayList<>(); 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() { public int getTurnNumber() {
//TODO return turnNumber;
return 0;
} }
public boolean isTurnWhite() { public boolean isTurnWhite() {
//TODO return isWhiteTurn;
return false;
} }
public void setPiece(boolean isWhite, PieceType type, int x, int y) { 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) { public void userTouch(int x, int y) {
if (selectedX == -1) { if (selectedX == -1) { // No current selection
// No current selection: Check if there's a piece at (x, y) // Check if there's a piece at the clicked position
for (Piece p : pieces) { for (Piece p : pieces) {
if (p.getX() == x && p.getY() == y) { if (p.getX() == x && p.getY() == y) {
selectedX = x; // Only allow selection if it's the correct player's turn
selectedY = y; if (p.isWhite() == isWhiteTurn) {
selectedX = x;
selectedY = y;
}
return; return;
} }
} }
} else { } else { // Already have a selected piece
// Already selected: Move or unselect if (x == selectedX && y == selectedY) { // Clicked same position: unselect
if (x == selectedX && y == selectedY) {
// Unselect
selectedX = -1; selectedX = -1;
selectedY = -1; selectedY = -1;
} else { } else { // Attempt to move
// Move piece from (selectedX, selectedY) to (x, y)
Piece pieceToMove = null; Piece pieceToMove = null;
// Find the selected piece
for (Piece p : pieces) { for (Piece p : pieces) {
if (p.getX() == selectedX && p.getY() == selectedY) { if (p.getX() == selectedX && p.getY() == selectedY) {
pieceToMove = p; pieceToMove = p;
break; break;
} }
} }
if (pieceToMove != null) { if (pieceToMove != null) {
// Remove target piece and move // Remove any piece at target location
pieces.removeIf(p -> p.getX() == x && p.getY() == y); pieces.removeIf(p -> p.getX() == x && p.getY() == y);
// Update piece position
pieceToMove.setX(x); pieceToMove.setX(x);
pieceToMove.setY(y); pieceToMove.setY(y);
// Advance game state
turnNumber++;
isWhiteTurn = !isWhiteTurn;
} }
// Unselect after move
// Clear selection regardless of move success
selectedX = -1; selectedX = -1;
selectedY = -1; selectedY = -1;
} }