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 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.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) {
// 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;
}