This commit is contained in:
Gaspard VANCOMPERNOLLE 2025-04-09 10:21:23 +02:00
parent d802462ea0
commit 8cd5e5adfc
1 changed files with 92 additions and 13 deletions

View File

@ -6,6 +6,9 @@ public class Board {
private int width; private int width;
private int height; private int height;
private int turnNumber = 0;
private int selectedX = -1;
private int selectedY = -1;
private ArrayList<Piece> pieces = new ArrayList<>(); private ArrayList<Piece> pieces = new ArrayList<>();
public Board(int colNum, int lineNum) { public Board(int colNum, int lineNum) {
@ -23,30 +26,62 @@ public class Board {
public int getTurnNumber() { public int getTurnNumber() {
//TODO //TODO
return 0; return turnNumber;
} }
public boolean isTurnWhite() { public boolean isTurnWhite() {
//TODO return (turnNumber % 2 == 0);
return false;
} }
public void setPiece(boolean isWhite, PieceType type, int x, int y) { public void setPiece(boolean isWhite, PieceType type, int x, int y) {
//TODO Piece piece = new Piece(type, isWhite, x, y);
pieces.add(piece);
} }
public void populateBoard() { public void populateBoard() {
//TODO cleanBoard(); // on vide d'abord le plateau
// Pions
for (int i = 0; i < 8; i++) {
setPiece(true, PieceType.Pawn, i, 6); // Blancs
setPiece(false, PieceType.Pawn, i, 1); // Noirs
}
// Pièces noires
setPiece(false, PieceType.Rook, 0, 0);
setPiece(false, PieceType.Knight, 1, 0);
setPiece(false, PieceType.Bishop, 2, 0);
setPiece(false, PieceType.Queen, 3, 0);
setPiece(false, PieceType.King, 4, 0);
setPiece(false, PieceType.Bishop, 5, 0);
setPiece(false, PieceType.Knight, 6, 0);
setPiece(false, PieceType.Rook, 7, 0);
// Pièces blanches
setPiece(true, PieceType.Rook, 0, 7);
setPiece(true, PieceType.Knight, 1, 7);
setPiece(true, PieceType.Bishop, 2, 7);
setPiece(true, PieceType.Queen, 3, 7);
setPiece(true, PieceType.King, 4, 7);
setPiece(true, PieceType.Bishop, 5, 7);
setPiece(true, PieceType.Knight, 6, 7);
setPiece(true, PieceType.Rook, 7, 7);
} }
public void cleanBoard() { public void cleanBoard() {
//TODO pieces.clear();
} }
public String toString() { public String toString() {
//TODO StringBuilder sb = new StringBuilder();
return ""; for (Piece p : pieces) {
sb.append(p.getType()).append(" ")
.append(p.isWhite() ? "white" : "black")
.append(" at (").append(p.getX()).append(", ").append(p.getY()).append(")\n");
} }
return sb.toString();
}
public ArrayList<Piece> getPieces() { public ArrayList<Piece> getPieces() {
ArrayList<Piece> pieces = new ArrayList<>(); ArrayList<Piece> pieces = new ArrayList<>();
@ -56,15 +91,50 @@ public class Board {
} }
public void userTouch(int x, int y) { public void userTouch(int x, int y) {
//TODO Piece clickedPiece = getPieceAt(x, y);
// Aucun pion sélectionné
if (selectedX == -1 && selectedY == -1) {
if (clickedPiece != null && clickedPiece.isWhite() == isTurnWhite()) {
selectedX = x;
selectedY = y;
} }
}
// Déjà une sélection
else {
// Si on reclique sur la même case, on désélectionne
if (selectedX == x && selectedY == y) {
selectedX = -1;
selectedY = -1;
} else {
Piece selectedPiece = getPieceAt(selectedX, selectedY);
if (selectedPiece != null && selectedPiece.isWhite() == isTurnWhite()) {
// Capture éventuelle
Piece destPiece = getPieceAt(x, y);
if (destPiece != null) {
pieces.remove(destPiece);
}
// Déplacement
pieces.remove(selectedPiece);
pieces.add(new Piece(selectedPiece.getType(), selectedPiece.isWhite(), x, y));
// Fin du tour
turnNumber++;
selectedX = -1;
selectedY = -1;
}
}
}
}
public boolean isSelected(int x, int y) { public boolean isSelected(int x, int y) {
//TODO return x == selectedX && y == selectedY;
return false;
} }
/* saving-loading feature :*/ /* saving-loading feature :*/
public String[] toFileRep() { public String[] toFileRep() {
@ -99,4 +169,13 @@ public class Board {
} }
private Piece getPieceAt(int x, int y) {
for (Piece p : pieces) {
if (p.getX() == x && p.getY() == y) {
return p;
}
}
return null;
}
} }