Compare commits
7 Commits
941ddef48a
...
6cdb93e84a
| Author | SHA1 | Date |
|---|---|---|
|
|
6cdb93e84a | |
|
|
fa82b689f6 | |
|
|
7aa52a418a | |
|
|
fb68e11d97 | |
|
|
4a123b0312 | |
|
|
8cd5e5adfc | |
|
|
d802462ea0 |
|
|
@ -6,66 +6,132 @@ public class Board {
|
|||
|
||||
private int width;
|
||||
private int height;
|
||||
private int turnNumber;
|
||||
private Piece[][] board;
|
||||
private int turnNumber = 0;
|
||||
private int selectedX = -1;
|
||||
private int selectedY = -1;
|
||||
private ArrayList<Piece> pieces = new ArrayList<>();
|
||||
|
||||
public Board(int colNum, int lineNum) {
|
||||
this.width = colNum;
|
||||
this.height = lineNum;
|
||||
this.turnNumber = 0;
|
||||
this.board = new Piece[width][height];
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return this.width;
|
||||
return width;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return this.height;
|
||||
return height;
|
||||
}
|
||||
|
||||
public int getTurnNumber() {
|
||||
//TODO
|
||||
return this.turnNumber;
|
||||
return turnNumber;
|
||||
}
|
||||
|
||||
public boolean isTurnWhite() {
|
||||
return (turnNumber % 2 == 0); // White plays on even-numbered turns
|
||||
return (turnNumber % 2 == 0);
|
||||
}
|
||||
|
||||
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() {
|
||||
//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() {
|
||||
//TODO
|
||||
pieces.clear();
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
//TODO
|
||||
return "";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
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() {
|
||||
ArrayList<Piece> pieces = new ArrayList<>();
|
||||
//TODO
|
||||
|
||||
return pieces;
|
||||
}
|
||||
|
||||
|
||||
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) {
|
||||
//TODO
|
||||
return false;
|
||||
return x == selectedX && y == selectedY;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* saving-loading feature :*/
|
||||
|
||||
|
|
@ -100,5 +166,14 @@ public class Board {
|
|||
//TODO
|
||||
|
||||
}
|
||||
|
||||
private Piece getPieceAt(int x, int y) {
|
||||
for (Piece p : pieces) {
|
||||
if (p.getX() == x && p.getY() == y) {
|
||||
return p;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,25 +1,33 @@
|
|||
package backend;
|
||||
|
||||
public class Piece {
|
||||
private int x;
|
||||
private int y;
|
||||
private PieceType type;
|
||||
private boolean isWhite;
|
||||
private int x;
|
||||
private int y;
|
||||
private PieceType type;
|
||||
private boolean isWhite;
|
||||
|
||||
public Piece(PieceType type, boolean isWhite, int x, int y) {
|
||||
this.type = type;
|
||||
this.isWhite = isWhite;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return 0;
|
||||
return x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return 0;
|
||||
return y;
|
||||
}
|
||||
|
||||
public PieceType getType() {
|
||||
return null;
|
||||
return type;
|
||||
}
|
||||
|
||||
public boolean isWhite() {
|
||||
return false;
|
||||
return isWhite;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue