diff --git a/Makefile b/Makefile index 6d73b81..1719ab9 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,10 @@ SRC_DIR = fr BIN_DIR = bin +# === Répertoires des ressources === +RES_SRC = fr/iut_fbleau/Res +RES_BIN = bin/fr/iut_fbleau/Res + # === Recherche automatique des fichiers .java dans tous les sous-dossiers === SOURCES := $(shell find $(SRC_DIR) -name "*.java") @@ -19,11 +23,20 @@ JAVAFLAGS = -cp $(BIN_DIR) all: build # === Compilation === -build: +build: compile resources + @echo "✔ Compilation terminée." + +compile: @echo "===> Compilation du projet Avalam..." @mkdir -p $(BIN_DIR) @$(JC) $(JCFLAGS) $(SOURCES) - @echo "✔ Compilation terminée." + +# === Copie des ressources (.txt) dans bin === +resources: + @echo "===> Copie des ressources..." + @mkdir -p $(RES_BIN) + @cp $(RES_SRC)/* $(RES_BIN)/ + @echo "✔ Ressources copiées." # === Exécution === run: diff --git a/bin/fr/iut_fbleau/Avalam/AvalamBoard.class b/bin/fr/iut_fbleau/Avalam/AvalamBoard.class new file mode 100644 index 0000000..0a16ba7 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/AvalamBoard.class differ diff --git a/bin/fr/iut_fbleau/Avalam/AvalamPly.class b/bin/fr/iut_fbleau/Avalam/AvalamPly.class new file mode 100644 index 0000000..349e485 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/AvalamPly.class differ diff --git a/bin/fr/iut_fbleau/Avalam/AvalamWindow$1.class b/bin/fr/iut_fbleau/Avalam/AvalamWindow$1.class new file mode 100644 index 0000000..1fa7d5a Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/AvalamWindow$1.class differ diff --git a/bin/fr/iut_fbleau/Avalam/AvalamWindow.class b/bin/fr/iut_fbleau/Avalam/AvalamWindow.class new file mode 100644 index 0000000..cddc4a2 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/AvalamWindow.class differ diff --git a/bin/fr/iut_fbleau/Avalam/Color.class b/bin/fr/iut_fbleau/Avalam/Color.class new file mode 100644 index 0000000..4981c02 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/Color.class differ diff --git a/bin/fr/iut_fbleau/Avalam/Main.class b/bin/fr/iut_fbleau/Avalam/Main.class new file mode 100644 index 0000000..9c8cac1 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/Main.class differ diff --git a/bin/fr/iut_fbleau/Avalam/Tower.class b/bin/fr/iut_fbleau/Avalam/Tower.class new file mode 100644 index 0000000..a775b74 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/Tower.class differ diff --git a/bin/fr/iut_fbleau/Avalam/logic/BoardLoader.class b/bin/fr/iut_fbleau/Avalam/logic/BoardLoader.class new file mode 100644 index 0000000..dbecd6a Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/logic/BoardLoader.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/BoardView.class b/bin/fr/iut_fbleau/Avalam/ui/BoardView.class new file mode 100644 index 0000000..bf748e7 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/BoardView.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/HighlightLayer.class b/bin/fr/iut_fbleau/Avalam/ui/HighlightLayer.class new file mode 100644 index 0000000..b7f5f34 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/HighlightLayer.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/InteractionController.class b/bin/fr/iut_fbleau/Avalam/ui/InteractionController.class new file mode 100644 index 0000000..3e65d47 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/InteractionController.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/PieceButton$1.class b/bin/fr/iut_fbleau/Avalam/ui/PieceButton$1.class new file mode 100644 index 0000000..0934895 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/PieceButton$1.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/PieceButton.class b/bin/fr/iut_fbleau/Avalam/ui/PieceButton.class new file mode 100644 index 0000000..ffe5d13 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/PieceButton.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/PieceLayer.class b/bin/fr/iut_fbleau/Avalam/ui/PieceLayer.class new file mode 100644 index 0000000..6384d98 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/PieceLayer.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/ScoreView.class b/bin/fr/iut_fbleau/Avalam/ui/ScoreView.class new file mode 100644 index 0000000..84c9183 Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/ScoreView.class differ diff --git a/bin/fr/iut_fbleau/Avalam/ui/TurnView.class b/bin/fr/iut_fbleau/Avalam/ui/TurnView.class new file mode 100644 index 0000000..2b86e5d Binary files /dev/null and b/bin/fr/iut_fbleau/Avalam/ui/TurnView.class differ diff --git a/bin/fr/iut_fbleau/GameAPI/AbstractBoard.class b/bin/fr/iut_fbleau/GameAPI/AbstractBoard.class new file mode 100644 index 0000000..d87460d Binary files /dev/null and b/bin/fr/iut_fbleau/GameAPI/AbstractBoard.class differ diff --git a/bin/fr/iut_fbleau/GameAPI/AbstractGame.class b/bin/fr/iut_fbleau/GameAPI/AbstractGame.class new file mode 100644 index 0000000..a0a51c3 Binary files /dev/null and b/bin/fr/iut_fbleau/GameAPI/AbstractGame.class differ diff --git a/bin/fr/iut_fbleau/GameAPI/AbstractGamePlayer.class b/bin/fr/iut_fbleau/GameAPI/AbstractGamePlayer.class new file mode 100644 index 0000000..1a52252 Binary files /dev/null and b/bin/fr/iut_fbleau/GameAPI/AbstractGamePlayer.class differ diff --git a/bin/fr/iut_fbleau/GameAPI/AbstractPly.class b/bin/fr/iut_fbleau/GameAPI/AbstractPly.class new file mode 100644 index 0000000..2966a40 Binary files /dev/null and b/bin/fr/iut_fbleau/GameAPI/AbstractPly.class differ diff --git a/bin/fr/iut_fbleau/GameAPI/IBoard.class b/bin/fr/iut_fbleau/GameAPI/IBoard.class new file mode 100644 index 0000000..22366b2 Binary files /dev/null and b/bin/fr/iut_fbleau/GameAPI/IBoard.class differ diff --git a/bin/fr/iut_fbleau/GameAPI/Player.class b/bin/fr/iut_fbleau/GameAPI/Player.class new file mode 100644 index 0000000..75badcc Binary files /dev/null and b/bin/fr/iut_fbleau/GameAPI/Player.class differ diff --git a/bin/fr/iut_fbleau/GameAPI/Result.class b/bin/fr/iut_fbleau/GameAPI/Result.class new file mode 100644 index 0000000..15a4ce1 Binary files /dev/null and b/bin/fr/iut_fbleau/GameAPI/Result.class differ diff --git a/bin/fr/iut_fbleau/Res/Plateau.txt b/bin/fr/iut_fbleau/Res/Plateau.txt new file mode 100644 index 0000000..250d0c9 --- /dev/null +++ b/bin/fr/iut_fbleau/Res/Plateau.txt @@ -0,0 +1,9 @@ +0,0,1,2,0,0,0,0,0 +0,1,2,1,2,0,0,0,0 +0,2,1,2,1,2,1,0,0 +0,1,2,1,2,1,2,1,2 +1,2,1,2,0,2,1,2,1 +2,1,2,1,2,1,2,1,0 +0,0,1,2,1,2,1,2,0 +0,0,0,0,2,1,2,1,0 +0,0,0,0,0,2,1,0,0 diff --git a/fr/iut_fbleau/Avalam/AvalamWindow.java b/fr/iut_fbleau/Avalam/AvalamWindow.java index 662356d..0714696 100644 --- a/fr/iut_fbleau/Avalam/AvalamWindow.java +++ b/fr/iut_fbleau/Avalam/AvalamWindow.java @@ -40,6 +40,8 @@ public class AvalamWindow extends JFrame { // Chargement du plateau initial depuis Plateau.txt // ---------------------------------------------------------- Tower[][] initialGrid = BoardLoader.loadFromFile("fr/iut_fbleau/Res/Plateau.txt"); + // debug TEMP !!!!!!!!! + System.out.println("DEBUG Plateau: Grid[0][0] = " + initialGrid[0][0]); board = new AvalamBoard(initialGrid); // PLAYER1 commence // ---------------------------------------------------------- @@ -97,10 +99,10 @@ public class AvalamWindow extends JFrame { String msg; switch (res) { - case WIN -> msg = "Le joueur jaune a gagné !"; - case LOSS -> msg = "Le joueur rouge a gagné !"; - case DRAW -> msg = "Égalité !"; - default -> msg = "Fin de partie."; + case WIN : msg = "Le joueur jaune a gagné !"; + case LOSS : msg = "Le joueur rouge a gagné !"; + case DRAW : msg = "Égalité !"; + default : msg = "Fin de partie."; } JOptionPane.showMessageDialog(this, msg, "Partie terminée", diff --git a/fr/iut_fbleau/Avalam/logic/BoardLoader.java b/fr/iut_fbleau/Avalam/logic/BoardLoader.java index 51794ff..d6f1f52 100644 --- a/fr/iut_fbleau/Avalam/logic/BoardLoader.java +++ b/fr/iut_fbleau/Avalam/logic/BoardLoader.java @@ -3,39 +3,55 @@ package fr.iut_fbleau.Avalam.logic; import fr.iut_fbleau.Avalam.Color; import fr.iut_fbleau.Avalam.Tower; -import java.io.*; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; -/** - * Charge un plateau Avalam depuis un fichier texte. - * Format attendu : matrice 9×9 de 0,1,2 séparés par virgule. - */ public class BoardLoader { - public static Tower[][] loadFromFile(String file) { + public static Tower[][] loadFromFile(String resourcePath) { + Tower[][] grid = new Tower[9][9]; - try (BufferedReader br = new BufferedReader(new FileReader(file))) { + 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 = br.readLine()) != null && row < 9) { + while ((line = reader.readLine()) != null && row < 9) { - String[] vals = line.split(","); + // 🔥 Accepte SOIT les espaces, SOIT les virgules + line = line.replace(",", " "); + String[] parts = line.trim().split("\\s+"); for (int col = 0; col < 9; col++) { - int v = Integer.parseInt(vals[col].trim()); + int value = Integer.parseInt(parts[col]); - switch (v) { - case 1 -> grid[row][col] = new Tower(Color.YELLOW); - case 2 -> grid[row][col] = new Tower(Color.RED); - default -> grid[row][col] = null; + 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; } } + row++; } - } catch (Exception e) { + } catch (IOException e) { e.printStackTrace(); }