added turn tracking variables, updated constructor, getTurnNumber,
isTurnWhite, userTouch updated
This commit is contained in:
parent
2ec7d1da61
commit
95aa5f0c34
|
|
@ -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.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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue