From 71ee1b1eb3218fc437023c8074ee55e64dc08260 Mon Sep 17 00:00:00 2001 From: Romain Murphy Date: Mon, 21 Apr 2025 18:49:03 +0200 Subject: [PATCH] board to file implemented, board from file does not work --- OOP_2B1_Project/src/backend/Board.java | 14 +-- OOP_2B1_Project/src/backend/FileBoard.java | 100 +++++++++++++++++++++ 2 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 OOP_2B1_Project/src/backend/FileBoard.java diff --git a/OOP_2B1_Project/src/backend/Board.java b/OOP_2B1_Project/src/backend/Board.java index e22bb5d..202f34f 100644 --- a/OOP_2B1_Project/src/backend/Board.java +++ b/OOP_2B1_Project/src/backend/Board.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.LinkedList; public class Board { - private int width; - private int height; + private int width = 8; + private int height = 8; private ArrayList> board = new ArrayList<>(); private boolean select = false; private int xm; @@ -191,13 +191,15 @@ public class Board { /* saving-loading feature :*/ public String[] toFileRep() { - //TODO - return null; + FileBoard boardToFile = new FileBoard(board,turnNumber,turnColor); + return boardToFile.toFile(); } public Board(String[] array) { - //TODO - + FileBoard boardToFile = new FileBoard(array); + this.board = boardToFile.getBoard(); + this.turnColor = boardToFile.isTurnColor(); + this.turnNumber = boardToFile.getTurnNumber(); } /* The following methods require more work ! */ diff --git a/OOP_2B1_Project/src/backend/FileBoard.java b/OOP_2B1_Project/src/backend/FileBoard.java new file mode 100644 index 0000000..9fe3448 --- /dev/null +++ b/OOP_2B1_Project/src/backend/FileBoard.java @@ -0,0 +1,100 @@ +package backend; + +import java.util.ArrayList; + +public class FileBoard { + private ArrayList> board = new ArrayList<>(); + private int turnNumber; + private boolean turnColor; + public FileBoard(ArrayList> board,int turnNumber, boolean turnColor) { + this.board = board; + this.turnColor = turnColor; + this.turnNumber = turnNumber; + } + public String[] toFile() { + String tC; + String toBeWritten = " "; + String activeLine = ""; + String[] boardFile = new String[8]; + for (int y = 0;y<8;y++) { + for (int x = 0;x<8;x++) { + if (x!= 7) { + if (board.get(y).get(x) != null) { + if (board.get(y).get(x).isWhite() == true) { + toBeWritten = 'W' + board.get(y).get(x).getType().getSummary() + ","; + } else { + toBeWritten = 'B' + board.get(y).get(x).getType().getSummary() + ","; + } + } else {toBeWritten = " ,";} + activeLine += toBeWritten; + } else { + if (board.get(y).get(x) != null) { + if (board.get(y).get(x).isWhite() == true) { + toBeWritten = 'W' + board.get(y).get(x).getType().getSummary(); + } else { + toBeWritten = 'B' + board.get(y).get(x).getType().getSummary(); + } + } else {toBeWritten = " ";} + activeLine += toBeWritten; + } + } + boardFile[y] = activeLine; + activeLine = ""; + } + if (turnColor) { + tC = "W"; + } else {tC = "B";} + boardFile[8] = turnNumber + tC; + return boardFile; + } + public FileBoard(String[] boardFile) { + ArrayList> boardF = new ArrayList<>(); + int rows = 8; + int cols = 8; + for (int i = 0; i < rows; i++) { + ArrayList row = new ArrayList<>(); + for (int j = 0; j < cols; j++) { + row.add(null); // Fill with null + } + boardF.add(row); + } + String pieceChar; + char color; + char type; + boolean col; + for (int x = 0; x<8;x++) { + for (int y = 0; y<8;y++) { + pieceChar = getCharAt(boardFile,x,y); + if (pieceChar.charAt(0) != ' ') { +// System.out.println(pieceChar); // Debug + color = pieceChar.charAt(0); + type = pieceChar.charAt(1); + if (color == 'W') {col = true;} else {col = false;} + Piece piece = PieceCreation.createPiece(x,y,PieceType.fromSummary(type),col); + boardF.get(y).set(x, piece); + } + } + } + pieceChar = getCharAt(boardFile,0,7); + type = pieceChar.charAt(0); + color = pieceChar.charAt(1); + if (color == 'B') {col = false;} else {col = true;} + this.board = boardF; + this.turnColor = col; + this.turnNumber = type; + + } + public String getCharAt(String[] str,int x,int y) { + return str[y].split(",")[x]; + } + public ArrayList> getBoard() { + return board; + } + public int getTurnNumber() { + return turnNumber; + } + public boolean isTurnColor() { + return turnColor; + } + +}