Board modification (Set Piece,User touch)
This commit is contained in:
parent
5822222afd
commit
c666978058
|
|
@ -52,11 +52,31 @@ private ArrayList<int[]> highlightedPositions = new ArrayList<>();
|
|||
}
|
||||
|
||||
public void setPiece(boolean isWhite, PieceType type, int x, int y) {
|
||||
|
||||
pieces.add(new Piece(isWhite, type, x, y));
|
||||
|
||||
|
||||
|
||||
// Create a new instance of the specific piece type
|
||||
Piece newPiece;
|
||||
switch (type) {
|
||||
case Pawn:
|
||||
newPiece = new Pawn(isWhite, x, y);
|
||||
break;
|
||||
case King:
|
||||
newPiece = new King(isWhite, x, y);
|
||||
break;
|
||||
case Queen:
|
||||
newPiece = new Queen(isWhite, x, y);
|
||||
break;
|
||||
case Rook:
|
||||
newPiece = new Rook(isWhite, x, y);
|
||||
break;
|
||||
case Bishop:
|
||||
newPiece = new Bishop(isWhite, x, y);
|
||||
break;
|
||||
case Knight:
|
||||
newPiece = new Knight(isWhite, x, y);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown piece type");
|
||||
}
|
||||
pieces.add(newPiece);
|
||||
}
|
||||
|
||||
public void populateBoard() {
|
||||
|
|
@ -134,63 +154,65 @@ private ArrayList<int[]> highlightedPositions = new ArrayList<>();
|
|||
}
|
||||
|
||||
public void userTouch(int x, int y) {
|
||||
|
||||
if (selectedX == null && selectedY == null) {
|
||||
|
||||
Piece pieceAtPos = getPieceAt(x, y);
|
||||
|
||||
if (pieceAtPos != null) {
|
||||
|
||||
selectedX = x;
|
||||
selectedY = y;
|
||||
}
|
||||
} else {
|
||||
|
||||
if (selectedX == x && selectedY == y) {
|
||||
|
||||
selectedX = null;
|
||||
selectedY = null;
|
||||
} else {
|
||||
|
||||
Piece pieceToMove = getPieceAt(selectedX, selectedY);
|
||||
|
||||
if (pieceToMove != null) {
|
||||
|
||||
Piece pieceAtDestination = getPieceAt(x, y);
|
||||
|
||||
|
||||
if (pieceAtDestination == null ||
|
||||
pieceAtDestination.isWhite() != pieceToMove.isWhite()) {
|
||||
|
||||
|
||||
if (pieceAtDestination == null || pieceAtDestination.isWhite() != pieceToMove.isWhite()) {
|
||||
if (pieceAtDestination != null) {
|
||||
pieces.remove(pieceAtDestination);
|
||||
}
|
||||
|
||||
|
||||
pieces.remove(pieceToMove);
|
||||
pieces.add(new Piece(pieceToMove.isWhite(), pieceToMove.getType(), x, y));
|
||||
|
||||
|
||||
|
||||
// Create a new instance of the specific piece type
|
||||
Piece newPiece;
|
||||
switch (pieceToMove.getType()) {
|
||||
case Pawn:
|
||||
newPiece = new Pawn(pieceToMove.isWhite(), x, y);
|
||||
break;
|
||||
case King:
|
||||
newPiece = new King(pieceToMove.isWhite(), x, y);
|
||||
break;
|
||||
case Queen:
|
||||
newPiece = new Queen(pieceToMove.isWhite(), x, y);
|
||||
break;
|
||||
case Rook:
|
||||
newPiece = new Rook(pieceToMove.isWhite(), x, y);
|
||||
break;
|
||||
case Bishop:
|
||||
newPiece = new Bishop(pieceToMove.isWhite(), x, y);
|
||||
break;
|
||||
case Knight:
|
||||
newPiece = new Knight(pieceToMove.isWhite(), x, y);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown piece type");
|
||||
}
|
||||
pieces.add(newPiece);
|
||||
|
||||
turnNumber++;
|
||||
turnIsWhite = !turnIsWhite;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
selectedX = null;
|
||||
selectedY = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private Piece getPieceAt(int x, int y) {
|
||||
public Piece getPieceAt(int x, int y) {
|
||||
for (Piece piece : pieces) {
|
||||
if (piece.getX() == x && piece.getY() == y) {
|
||||
return piece;
|
||||
|
|
@ -304,5 +326,7 @@ public ArrayList<Piece> getAllPieces() {
|
|||
|
||||
return pieces;
|
||||
}
|
||||
|
||||
public boolean isInBounds(int row, int col) {
|
||||
return row >= 0 && row < 8 && col >= 0 && col < 8;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue