diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..eb07785
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,41 @@
+# Répertoires
+SRC_DIR = .
+BIN_DIR = bin
+
+# Trouve tous les fichiers .java
+SOURCES := $(shell find $(SRC_DIR) -name "*.java")
+
+# Classe principale
+MAIN = fr.iut_fbleau.Avalam.Main
+
+# Options javac
+JC = javac
+JCFLAGS = -d $(BIN_DIR)
+
+# Options java
+JAVA = java
+JAVAFLAGS = -cp $(BIN_DIR)
+
+# Règle par défaut
+all: build
+
+# Compilation
+build:
+ @echo "Compilation du projet..."
+ @mkdir -p $(BIN_DIR)
+ @$(JC) $(JCFLAGS) $(SOURCES)
+ @echo "✔ Compilation terminée !"
+
+# Exécution
+run:
+ @echo "Lancement du jeu Avalam..."
+ @$(JAVA) $(JAVAFLAGS) $(MAIN)
+
+# Nettoyage des .class
+clean:
+ @echo "Suppression des fichiers compilés..."
+ @rm -rf $(BIN_DIR)
+ @echo "✔ Nettoyage terminé !"
+
+# Recompile + run
+re: clean all run
diff --git a/fr/iut_fbleau/Avalam/AvalamPanel.java b/fr/iut_fbleau/Avalam/AvalamPanel.java
new file mode 100644
index 0000000..17a9408
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/AvalamPanel.java
@@ -0,0 +1,184 @@
+package fr.iut_fbleau.Avalam;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.*;
+
+/**
+ * La classe AvalamPanel gère l'affichage graphique du plateau Avalam.
+ *
+ * Elle a pour rôle :
+ * - de charger la configuration initiale du plateau depuis le fichier Plateau.txt
+ * - d'afficher les pions sous forme de boutons ronds cliquables
+ * - de gérer leur positionnement visuel sur une fenêtre Swing
+ *
+ * À ce stade, les clics ne modifient pas le modèle (aucune règle appliquée),
+ * ils servent seulement à confirmer que la sélection fonctionne.
+ *
+ * @version 1.0
+ * @author ---
+ */
+public class AvalamPanel extends JPanel {
+
+ /** Grille du plateau contenant des objets Tower ou null (case vide). */
+ private Tower[][] grid = new Tower[9][9];
+
+ /** Taille visuelle d’un pion. */
+ private final int pionTaille = 50;
+
+ /** Distance entre deux pions. */
+ private final int pas = 70;
+
+ /** Décalage horizontal pour centrer le plateau. */
+ private final int xBase = 60;
+
+ /** Décalage vertical pour centrer le plateau. */
+ private final int yBase = 60;
+
+ /**
+ * Constructeur.
+ * Initialise le layout, charge le plateau et affiche les pions.
+ */
+ public AvalamPanel() {
+ setLayout(null);
+ chargerPlateau();
+ afficherPions();
+ }
+
+ /**
+ * Charge la grille du plateau depuis le fichier Plateau.txt (matrice du plateau).
+ *
+ * 0 → case vide
+ * 1 → pion du joueur 1 (couleur YELLOW)
+ * 2 → pion du joueur 2 (couleur RED)
+ */
+ private void chargerPlateau() {
+ try {
+ File f = new File("fr/iut_fbleau/Res/Plateau.txt");
+ BufferedReader br = new BufferedReader(new FileReader(f));
+
+ String line;
+ int row = 0;
+
+ while ((line = br.readLine()) != null && row < 9) {
+ String[] parts = line.split(",");
+ for (int col = 0; col < 9; col++) {
+ int valeur = Integer.parseInt(parts[col]);
+
+ if (valeur == 1) grid[row][col] = new Tower(Color.YELLOW);
+ else if (valeur == 2) grid[row][col] = new Tower(Color.RED);
+ else grid[row][col] = null;
+ }
+ row++;
+ }
+
+ br.close();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Ajoute graphiquement les pions sur le plateau.
+ * Chaque pion est représenté par un bouton rond Swing.
+ */
+ private void afficherPions() {
+ for (int i = 0; i < 9; i++) {
+ for (int j = 0; j < 9; j++) {
+ Tower t = grid[i][j];
+
+ if (t != null) {
+
+ // Conversion couleur Avalam → couleur Swing
+ java.awt.Color swingColor = t.getColor().getSwingColor();
+
+ JButton pion = creerBoutonRond(swingColor);
+
+ int x = xBase + j * pas;
+ int y = yBase + i * pas;
+ pion.setBounds(x, y, pionTaille, pionTaille);
+
+ int finalI = i;
+ int finalJ = j;
+
+ // !!!TEMPORAIRE!!! permet de voir quel endroit cliqué
+ pion.addActionListener(e ->
+ JOptionPane.showMessageDialog(null,
+ "Tu as cliqué sur (" + finalI + ", " + finalJ + ")")
+ );
+
+ add(pion);
+ }
+ }
+ }
+ }
+
+ /**
+ * Crée un bouton rond représentant un pion.
+ *
+ * Un effet d'assombrissement est appliqué au survol pour un meilleur feedback visuel.
+ *
+ * @param couleurSwing la couleur Swing du pion
+ * @return un bouton circulaire
+ */
+ private JButton creerBoutonRond(java.awt.Color couleurSwing) {
+
+ JButton bouton = new JButton() {
+
+ /** Indique si la souris survole le bouton. */
+ private boolean hover = false;
+
+ {
+ setBorderPainted(false);
+ setContentAreaFilled(false);
+ setFocusPainted(false);
+ setOpaque(false);
+
+ // Gestion du survol
+ addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ hover = true;
+ repaint();
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ hover = false;
+ repaint();
+ }
+ });
+ }
+
+ /**
+ * Dessine le pion sous forme de cercle.
+ */
+ @Override
+ protected void paintComponent(Graphics g) {
+ Graphics2D g2 = (Graphics2D) g.create();
+ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+
+ g2.setColor(hover ? couleurSwing.darker() : couleurSwing);
+ g2.fillOval(0, 0, getWidth(), getHeight());
+
+ g2.dispose();
+ }
+
+ /**
+ * Rend le clique précis au cercle (pas carré).
+ */
+ @Override
+ public boolean contains(int x, int y) {
+ double dx = x - getWidth() / 2.0;
+ double dy = y - getHeight() / 2.0;
+ return dx * dx + dy * dy <= (getWidth() / 2.0) * (getWidth() / 2.0);
+ }
+ };
+
+ bouton.setPreferredSize(new Dimension(pionTaille, pionTaille));
+ return bouton;
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/AvalamWindow.java b/fr/iut_fbleau/Avalam/AvalamWindow.java
new file mode 100644
index 0000000..7d7038a
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/AvalamWindow.java
@@ -0,0 +1,30 @@
+package fr.iut_fbleau.Avalam;
+
+import javax.swing.*;
+
+/**
+ * La classe AvalamWindow représente la fenêtre principale du jeu Avalam.
+ *
+ * Elle crée une fenêtre Swing, lui donne une taille, un titre,
+ * puis y ajoute un AvalamPanel qui contient l'affichage réel du plateau.
+ *
+ * @version 1.0
+ */
+public class AvalamWindow extends JFrame {
+
+ /**
+ * Constructeur : initialise la fenêtre du jeu.
+ */
+ public AvalamWindow() {
+ super("Avalam - Plateau Graphique");
+
+ setSize(750, 750);
+ setLocationRelativeTo(null);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ // Ajout du panneau contenant le plateau
+ add(new AvalamPanel());
+
+ setVisible(true);
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/Color.java b/fr/iut_fbleau/Avalam/Color.java
index 5b91d92..cf75509 100644
--- a/fr/iut_fbleau/Avalam/Color.java
+++ b/fr/iut_fbleau/Avalam/Color.java
@@ -1,6 +1,33 @@
-package fr.iut_fbleau.Avalam ;
+package fr.iut_fbleau.Avalam;
-public enum Color{
- RED,
- YELLOW
-}
\ No newline at end of file
+/**
+ * L'énumération Color représente la couleur du sommet d'une tour Avalam.
+ *
+ * Chaque valeur contient directement sa couleur Swing associée,
+ * ce qui évite les conversions dans le code graphique.
+ *
+ * @version 2.0
+ */
+public enum Color {
+
+ RED(java.awt.Color.RED),
+ YELLOW(java.awt.Color.YELLOW);
+
+ /** Couleur Swing associée à la couleur Avalam. */
+ private final java.awt.Color swingColor;
+
+ /**
+ * Constructeur interne de l’énumération.
+ * @param col couleur Swing associée.
+ */
+ Color(java.awt.Color col) {
+ this.swingColor = col;
+ }
+
+ /**
+ * Retourne la couleur Swing (java.awt.Color) associée.
+ */
+ public java.awt.Color getSwingColor() {
+ return this.swingColor;
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/Main.java b/fr/iut_fbleau/Avalam/Main.java
new file mode 100644
index 0000000..ef3497d
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/Main.java
@@ -0,0 +1,17 @@
+package fr.iut_fbleau.Avalam;
+
+import fr.iut_fbleau.Avalam.AvalamWindow;
+
+/**
+ * Classe principale lançant le programme Avalam.
+ *
+ * Le point d'entrée du programme crée simplement une fenêtre AvalamWindow,
+ * qui initialise l'affichage du jeu.
+ *
+ * @version 1.0
+ */
+public class Main {
+ public static void main(String[] args) {
+ new AvalamWindow();
+ }
+}
diff --git a/fr/iut_fbleau/AvalamTests/TestTower.class b/fr/iut_fbleau/AvalamTests/TestTower.class
new file mode 100644
index 0000000..a832969
Binary files /dev/null and b/fr/iut_fbleau/AvalamTests/TestTower.class differ
diff --git a/fr/iut_fbleau/GameAPI/AbstractBoard.class b/fr/iut_fbleau/GameAPI/AbstractBoard.class
new file mode 100644
index 0000000..5372ca6
Binary files /dev/null and b/fr/iut_fbleau/GameAPI/AbstractBoard.class differ
diff --git a/fr/iut_fbleau/GameAPI/AbstractGame.class b/fr/iut_fbleau/GameAPI/AbstractGame.class
new file mode 100644
index 0000000..9c63903
Binary files /dev/null and b/fr/iut_fbleau/GameAPI/AbstractGame.class differ
diff --git a/fr/iut_fbleau/GameAPI/AbstractGamePlayer.class b/fr/iut_fbleau/GameAPI/AbstractGamePlayer.class
new file mode 100644
index 0000000..ff18254
Binary files /dev/null and b/fr/iut_fbleau/GameAPI/AbstractGamePlayer.class differ
diff --git a/fr/iut_fbleau/GameAPI/AbstractPly.class b/fr/iut_fbleau/GameAPI/AbstractPly.class
new file mode 100644
index 0000000..5a3a4d2
Binary files /dev/null and b/fr/iut_fbleau/GameAPI/AbstractPly.class differ
diff --git a/fr/iut_fbleau/GameAPI/IBoard.class b/fr/iut_fbleau/GameAPI/IBoard.class
new file mode 100644
index 0000000..986c0b3
Binary files /dev/null and b/fr/iut_fbleau/GameAPI/IBoard.class differ
diff --git a/fr/iut_fbleau/GameAPI/Player.class b/fr/iut_fbleau/GameAPI/Player.class
new file mode 100644
index 0000000..c659c8b
Binary files /dev/null and b/fr/iut_fbleau/GameAPI/Player.class differ
diff --git a/fr/iut_fbleau/GameAPI/Result.class b/fr/iut_fbleau/GameAPI/Result.class
new file mode 100644
index 0000000..4234ba9
Binary files /dev/null and b/fr/iut_fbleau/GameAPI/Result.class differ
diff --git a/fr/iut_fbleau/Res/Plateau.txt b/fr/iut_fbleau/Res/Plateau.txt
new file mode 100644
index 0000000..250d0c9
--- /dev/null
+++ b/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