2026-01-26 06:39:49 -05:00
|
|
|
|
package fr.iut_fbleau.Avalam;
|
2025-11-22 11:56:51 -05:00
|
|
|
|
|
|
|
|
|
|
import fr.iut_fbleau.Avalam.Color;
|
|
|
|
|
|
import fr.iut_fbleau.Avalam.Tower;
|
2025-11-25 16:02:23 -05:00
|
|
|
|
|
2025-11-27 13:06:14 +01:00
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
|
import java.io.InputStreamReader;
|
2025-11-22 11:56:51 -05:00
|
|
|
|
|
2026-01-26 06:39:49 -05:00
|
|
|
|
/**
|
|
|
|
|
|
* La classe <code>BoardLoader</code>
|
|
|
|
|
|
*
|
|
|
|
|
|
* 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 (<code>Tower[][]</code>) à partir d’une ressource.
|
|
|
|
|
|
*/
|
2025-11-22 11:56:51 -05:00
|
|
|
|
public class BoardLoader {
|
|
|
|
|
|
|
2026-01-26 06:39:49 -05:00
|
|
|
|
//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
|
|
|
|
|
|
*/
|
2025-11-27 13:06:14 +01:00
|
|
|
|
public static Tower[][] loadFromFile(String resourcePath) {
|
|
|
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
|
Tower[][] grid = new Tower[9][9];
|
|
|
|
|
|
|
2025-11-27 13:06:14 +01:00
|
|
|
|
InputStream in = BoardLoader.class.getResourceAsStream("/" + resourcePath);
|
|
|
|
|
|
|
|
|
|
|
|
if (in == null) {
|
2026-01-26 06:39:49 -05:00
|
|
|
|
System.err.println("Ressource introuvable : /" + resourcePath);
|
2025-11-27 13:06:14 +01:00
|
|
|
|
return grid;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
|
2025-11-22 11:56:51 -05:00
|
|
|
|
|
|
|
|
|
|
String line;
|
|
|
|
|
|
int row = 0;
|
|
|
|
|
|
|
2025-11-27 13:06:14 +01:00
|
|
|
|
while ((line = reader.readLine()) != null && row < 9) {
|
2025-11-22 11:56:51 -05:00
|
|
|
|
|
2026-01-26 06:39:49 -05:00
|
|
|
|
// Accepte SOIT les espaces, SOIT les virgules
|
2025-11-27 13:06:14 +01:00
|
|
|
|
line = line.replace(",", " ");
|
|
|
|
|
|
String[] parts = line.trim().split("\\s+");
|
2025-11-22 11:56:51 -05:00
|
|
|
|
|
|
|
|
|
|
for (int col = 0; col < 9; col++) {
|
2025-11-27 13:06:14 +01:00
|
|
|
|
int value = Integer.parseInt(parts[col]);
|
|
|
|
|
|
|
|
|
|
|
|
switch (value) {
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
grid[row][col] = new Tower(Color.YELLOW);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
grid[row][col] = new Tower(Color.RED);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
grid[row][col] = null;
|
|
|
|
|
|
break;
|
2025-11-25 16:02:23 -05:00
|
|
|
|
}
|
2025-11-22 11:56:51 -05:00
|
|
|
|
}
|
2025-11-27 13:06:14 +01:00
|
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
|
row++;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-27 13:06:14 +01:00
|
|
|
|
} catch (IOException e) {
|
2025-11-22 11:56:51 -05:00
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return grid;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|