loading and saving method done

This commit is contained in:
mariettakazimierczak 2025-05-17 19:54:52 +02:00
parent c555ba8350
commit 6e70865ae6
2 changed files with 73 additions and 6 deletions

View File

@ -15,6 +15,7 @@ public class Board {
private Move lastMove; // Tracks the last move; needed for en-passant rule private Move lastMove; // Tracks the last move; needed for en-passant rule
private List<Board> previousStates = new ArrayList<>(); private List<Board> previousStates = new ArrayList<>();
//constructor for the board //constructor for the board
public Board(int colNum, int lineNum) { //here colNum and lineNum are arguments public Board(int colNum, int lineNum) { //here colNum and lineNum are arguments
this.width=colNum; //this refers to the current object this.width=colNum; //this refers to the current object
@ -221,14 +222,71 @@ public class Board {
/* saving-loading feature :*/ /* saving-loading feature :*/
public String[] toFileRep() { public String[] toFileRep() {
//TODO String[] out = new String[height + 1];
return null; for (int y = 0; y < height; y++) {
} StringBuilder row = new StringBuilder();
for (int x = 0; x < width; x++) {
Piece p = board[x][y];
if (p == null) {
row.append("--");
} else {
row.append(p.isWhite() ? 'W' : 'B');
switch (p.getType()) {
case King: row.append('K'); break;
case Queen: row.append('Q'); break;
case Rook: row.append('R'); break;
case Bishop: row.append('B'); break;
case Knight: row.append('N'); break;
case Pawn: row.append('P'); break;
}
}
if (x < width - 1) row.append(',');
}
out[y] = row.toString();
}
// whose turn next
out[height] = isTurnWhite ? "W" : "B";
return out;
}
public Board(String[] array) { public Board(String[] fileRep) {
//TODO // derive dimensions
this.width = fileRep[0].split(",").length;
this.height = fileRep.length - 1;
this.board = new Piece[width][height];
// parse each row
for (int y = 0; y < height; y++) {
String[] cells = fileRep[y].split(",");
for (int x = 0; x < width; x++) {
String c = cells[x];
if (!c.equals("--")) {
boolean white = (c.charAt(0) == 'W');
char t = c.charAt(1);
PieceType type;
switch (t) {
case 'K': type = PieceType.King; break;
case 'Q': type = PieceType.Queen; break;
case 'R': type = PieceType.Rook; break;
case 'B': type = PieceType.Bishop; break;
case 'N': type = PieceType.Knight; break;
case 'P': type = PieceType.Pawn; break;
default: throw new IllegalArgumentException("Bad code: "+c);
}
// create the piece at (x,y)
Piece p = new Piece(x, y, type, white);
board[x][y] = p;
}
}
}
// restore turn flag and clear any history/highlights
this.isTurnWhite = fileRep[height].equals("W");
this.previousStates = new ArrayList<>();
this.highlightedSquares= new ArrayList<>();
// any other fields you need to init
}
}
/* The following methods require more work ! */ /* The following methods require more work ! */

View File

@ -0,0 +1,9 @@
BR,BN,BB,BQ,BK,BB,BN,BR
BP,BP,--,BP,BP,BP,BP,BP
--,--,--,--,--,--,--,--
--,--,BP,--,--,--,--,--
--,--,--,--,--,WP,--,--
--,--,--,--,--,--,--,--
WP,WP,WP,WP,WP,--,WP,WP
WR,WN,WB,WQ,WK,WB,WN,WR
W