package fr.iut_fbleau.Avalam; import fr.iut_fbleau.Avalam.Color; import fr.iut_fbleau.Avalam.Tower; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * La classe BoardLoader * * Permet de charger un plateau Avalam à partir d’un fichier texte. * Le fichier contient une grille 9x9 de valeurs numériques : * - 0 : case vide * - 1 : tour jaune * - 2 : tour rouge * * Cette classe fournit une méthode statique pour construire * une grille de tours (Tower[][]) à partir d’une ressource. */ public class BoardLoader { //Attributs //Constructeur //Méthodes /** * Charge un plateau Avalam depuis un fichier de ressources. * * @param resourcePath chemin du fichier de plateau (dans les ressources) * @return une grille 9x9 de tours (Tower) ou null pour les cases vides */ public static Tower[][] loadFromFile(String resourcePath) { Tower[][] grid = new Tower[9][9]; InputStream in = BoardLoader.class.getResourceAsStream("/" + resourcePath); if (in == null) { System.err.println("Ressource introuvable : /" + resourcePath); return grid; } try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) { String line; int row = 0; while ((line = reader.readLine()) != null && row < 9) { // Accepte SOIT les espaces, SOIT les virgules line = line.replace(",", " "); String[] parts = line.trim().split("\\s+"); for (int col = 0; col < 9; col++) { int value = Integer.parseInt(parts[col]); switch (value) { case 1: grid[row][col] = Tower.createTower(Color.YELLOW); break; case 2: grid[row][col] = Tower.createTower(Color.RED); break; default: grid[row][col] = null; break; } } row++; } } catch (IOException e) { e.printStackTrace(); } return grid; } }