board initialisation (and test)

This commit is contained in:
eliot 2025-05-07 14:32:53 +02:00
parent dfdf692e0b
commit df2bf3df9f
3 changed files with 109 additions and 14 deletions

View File

@ -10,17 +10,18 @@ public class Main {
public static void main(String[] args) {
// testing :
Board testBoard = new Board(9, 8);
Board testBoard = new Board(8, 8);
testBoard.populateBoard();
testBoard.getHeight();
testBoard.getWidth();
System.out.println(testBoard.toString());
testBoard.populateBoard();
Piece testPiece = new Piece();
/**Piece testPiece = new Piece(true, PieceType.Rook, 2,3);
testPiece.getX();
testPiece.getY();
testPiece.getType();
testPiece.isWhite();
testPiece.isWhite();*/
// launches graphical interface :

View File

@ -8,16 +8,23 @@ public class Board {
private int colNum;
private int lineNum;
public String board[][];
private PieceType type;
private ArrayList<Piece> pieces;
public Board(int colNum, int lineNum) {
this.colNum = colNum;
this.lineNum = lineNum;
String board[][] = new String[lineNum][colNum];
for (int i = 0; i < lineNum; i++) {
for (int j = 0; j < colNum; j++) {
board[i][j] = null;
}
}
this.pieces = new ArrayList<>();
//board = new String[lineNum][colNum];
// for (int i = 0; i < lineNum; i++) {
// for (int j = 0; j < colNum; j++) {
// board[i][j] = null;
// }
// }
}
public int getWidth() {
@ -41,26 +48,101 @@ public class Board {
}
public void setPiece(boolean isWhite, PieceType type, int x, int y) {
// Remove existing piece at coordinates (x,y)
pieces.removeIf(p -> p.getX() == x && p.getY() == y);
// Add new piece
pieces.add(new Piece(isWhite, type, x, y));
//TODO
}
;
public void populateBoard() {
//TODO
for(int x=0; x<8;x++) {
setPiece(false,PieceType.Pawn,x,1);
setPiece(true,PieceType.Pawn,x,6);
}
setPiece(false,PieceType.Rook,0,0);
setPiece(false,PieceType.Rook,7,0);
setPiece(true,PieceType.Rook,0,7);
setPiece(true,PieceType.Rook,7,7);
setPiece(false,PieceType.Knight,1,0);
setPiece(false,PieceType.Knight,6,0);
setPiece(true,PieceType.Knight,1,7);
setPiece(true,PieceType.Knight,6,7);
setPiece(false,PieceType.Bishop,2,0);
setPiece(false,PieceType.Bishop,5,0);
setPiece(true,PieceType.Bishop,2,7);
setPiece(true,PieceType.Bishop,5,7);
setPiece(false,PieceType.Queen,3,0);
setPiece(true,PieceType.Queen,3,7);
setPiece(false,PieceType.King,4,0);
setPiece(true,PieceType.King,4,7);
}
public void cleanBoard() {
pieces.clear(); // Remove all pieces from the board
//TODO
}
public String toString() {
StringBuilder sb = new StringBuilder();
// Header (column labels)
sb.append(" ");
for (int x = 0; x < colNum; x++) {
sb.append((char)('a' + x)).append(" ");
}
sb.append("\n");
// Board rows (8 to 1, since chess starts from bottom)
for (int y = 0; y < lineNum; y++) {
sb.append(lineNum - y).append(" "); // Row number (8 to 1)
for (int x = 0; x < colNum; x++) {
boolean pieceFound = false;
// Check if a piece exists at (x, y)
for (Piece p : pieces) {
if (p.getX() == x && p.getY() == y) {
char pieceChar = getPieceSymbol(p);
sb.append(pieceChar).append(" ");
pieceFound = true;
break;
}
}
// If no piece, add a dot (.)
if (!pieceFound) {
sb.append(". ");
}
}
sb.append("\n");
}
//TODO
return "";
return sb.toString();
}
// Helper method to convert Piece to symbol (e.g., 'K' for white king)
private char getPieceSymbol(Piece p) {
char symbol;
switch (p.getType()) {
case Pawn: symbol = 'P'; break;
case Rook: symbol = 'R'; break;
case Knight: symbol = 'N'; break;
case Bishop: symbol = 'B'; break;
case Queen: symbol = 'Q'; break;
case King: symbol = 'K'; break;
default: symbol = '?'; // Should never happen
}
return p.isWhite() ? symbol : Character.toLowerCase(symbol);
}
public ArrayList<Piece> getPieces() {
ArrayList<Piece> pieces = new ArrayList<>();
//TODO
return pieces;
}

View File

@ -7,7 +7,19 @@ public class Piece {
private int y;
private PieceType type;
//
public Piece() {
// Leave empty or initialize default values
}
//
public Piece(boolean isWhite, PieceType type, int x, int y) {
this.color = isWhite;
this.type = type;
this.x = x;
this.y = y;
}
public int getX() {
System.out.println("The X value is " + x);