Ajout de la fonctionnalité d'import/export de grille #2

Merged
Lyanis SOUIDI merged 6 commits from feature_filemanager into master 2023-04-28 03:23:44 +02:00
Showing only changes of commit e4ad5b180a - Show all commits

View File

@ -36,7 +36,53 @@ public class FileManager {
}
public static void exportGrid(Grid grid, File file) throws Exception {
// TODO: Export de la grille
try (FileOutputStream fs = new FileOutputStream(file);
DataOutputStream ds = new DataOutputStream(fs)) {
// Écriture de la taille de la grille
ds.writeByte(grid.getSize());
// Écriture de la position de Thésée
Square theseeSquare = grid.getThesee().getSquare();
ds.writeByte(theseeSquare.getRow());
ds.writeByte(theseeSquare.getColumn());
// Écriture de la position de la sortie
for (int i = 0; i < grid.getSize(); i++) {
for (int j = 0; j < grid.getSize(); j++) {
Square square = grid.getSquare(i,j);
if (square.isExit()) {
ds.writeByte(square.getRow());
ds.writeByte(square.getColumn());
break;
}
}
}
// Écriture des murs
int bit = 0;
byte value = 0;
for (int i = 0; i < grid.getSize(); i++) {
for (int j = 0; j < grid.getSize(); j++) {
Square square = grid.getSquare(i, j);
if (square.isWall()) {
value |= 1 << (7 - bit);
}
bit++;
if (bit == 8) {
ds.writeByte(value);
value = 0;
bit = 0;
}
}
}
if (bit != 0) {
ds.writeByte(value);
}
} catch (IOException e) {
throw new Exception("Une erreur est survenue lors de l'écriture du fichier.");
}
}
// Test (à retirer)