diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3ed12b8
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,40 @@
+# === Répertoires ===
+SRC_DIR = fr
+BIN_DIR = bin
+
+# === Recherche automatique des fichiers .java dans tous les sous-dossiers ===
+SOURCES := $(shell find $(SRC_DIR) -name "*.java")
+
+# === Classe principale ===
+MAIN_CLASS = fr.iut_fbleau.Avalam.Main
+
+# === Commandes Java ===
+JC = javac
+JCFLAGS = -d $(BIN_DIR)
+
+JAVA = java
+JAVAFLAGS = -cp $(BIN_DIR)
+
+# === Règle par défaut ===
+all: build
+
+# === Compilation ===
+build:
+ @echo "===> Compilation du projet Avalam..."
+ @mkdir -p $(BIN_DIR)
+ @$(JC) $(JCFLAGS) $(SOURCES)
+ @echo "✔ Compilation terminée."
+
+# === Exécution ===
+run:
+ @echo "===> Lancement du jeu Avalam..."
+ @$(JAVA) $(JAVAFLAGS) $(MAIN_CLASS)
+
+# === Nettoyage ===
+clean:
+ @echo "===> Suppression des fichiers compilés..."
+ @rm -rf $(BIN_DIR)
+ @echo "✔ Nettoyage complet."
+
+# === Recompile + run ===
+re: clean build run
diff --git a/Modèles/Modèle Class.txt b/Modèles/Modèle Class.txt
new file mode 100644
index 0000000..b4ab692
--- /dev/null
+++ b/Modèles/Modèle Class.txt
@@ -0,0 +1,23 @@
+
+/**
+* La classe Class
+*
+* @version
+* @author
+* Date :
+* Licence :
+*/
+public class Class {
+ //Attributs
+
+ //Constructeur
+ public Class() {
+
+ }
+ //Méthodes
+
+ //Affichage
+ public String toString() {
+ return "" ;
+ }
+}
diff --git a/Modèles/Modèle Event.txt b/Modèles/Modèle Event.txt
new file mode 100644
index 0000000..a460b85
--- /dev/null
+++ b/Modèles/Modèle Event.txt
@@ -0,0 +1,23 @@
+import javax.swing.*;
+import java.awt.event.*;
+
+/**
+* La classe Event
+*
+* @version
+* @author
+* Date :
+* Licence :
+*/
+public class Event implements ActionListener {
+ // Attributs
+
+ // Constructeur de l'évennement
+ public Event() {
+
+ }
+ // Action de l'évennement
+ public void actionPerformed(ActionEvent event){
+
+ }
+}
diff --git a/Modèles/Modèle Interface.txt b/Modèles/Modèle Interface.txt
new file mode 100644
index 0000000..8b6e6d3
--- /dev/null
+++ b/Modèles/Modèle Interface.txt
@@ -0,0 +1,14 @@
+
+/**
+* L'interface Interface
+*
+* @version
+* @author
+* Date :
+* Licence :
+*/
+public interface Interface {
+ //Méthodes
+ public void Action() ;
+
+}
diff --git a/Modèles/Modèle Main.txt b/Modèles/Modèle Main.txt
new file mode 100644
index 0000000..e6573a9
--- /dev/null
+++ b/Modèles/Modèle Main.txt
@@ -0,0 +1,14 @@
+
+/**
+* La classe Main
+*
+* @version
+* @author
+* Date :
+* Licence :
+*/
+public class Main {
+ public static void main(String[] args){
+
+ }
+}
diff --git a/README.md b/README.md
index 165a591..3f2fc48 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# BUT3 Projet Jeu Groupe
-*Auteurs : AMARY Aurelien, DICK Adrien, FELIX-VIMALARATNAM Patrick, RABN Hugo*
+*Auteurs : AMARY Aurelien, DICK Adrien, FELIX-VIMALARATNAM Patrick, RABAN Hugo*
Date de création : 16/10/25
@@ -10,20 +10,21 @@ Dans un second temps, on fera des bots le plus efficace possible (probablement u
Le jeu de notre groupe est **Avalam**.
-## Présentation Avalam
-Sur un plateau de jeu, les joueurs dispose de 24 pions chacun. Le but est de créer des petites tours avec son pions de couleur au dessus. Pour ce faire chaque joueur déplace son pion sur une tour ou déplace une tour sur un autre pion. La personne avec le plus de pions sur le dessus de chaque tour gagne.
+## Présentation [Avalam](https://escaleajeux.fr/?principal=/jeu/avaxl?)
+
+Sur un plateau de jeu, les joueurs disposent de 24 pions chacun. Le but est de créer de petites tours avec son pion de couleur au-dessus. Pour ce faire, chaque joueur déplace son pion sur une tour ou déplace une tour sur un autre pion. La personne ayant le plus de pions sur le dessus des tours gagne.
### Régles officiel :
-**Regle de base** \
+**Régle de base** \
Chaque joueur choisit sa couleur.
Le but du jeu est de constituer un maximum de tours de 1 à 5 pions, jamais plus, surmontées par un pion de sa couleur.
Un joueur est le propriétaire d'une tour lorsqu'un pion de sa couleur en occupe le sommet. Un pion isolé constitue également une tour.
**Deplacements** \
-Chaque joueur en effectue un seul, dans n'importe quel sens (horizontal, vertical, diagonal) avec n'importe quel pion (ou pile de pions), quelle qu'en soit la couleur. Ce mouvement consiste à empiler le ou les pions déplacés sur un trou directement voisin déjà occupé par un ou plusieurs pions.
+Chaque joueur en effectue un seul mouvement, dans n'importe quel sens (horizontal, vertical, diagonal) avec n'importe quel pion (ou pile de pions), quelle qu'en soit la couleur. Ce mouvement consiste à empiler le ou les pions déplacés sur un trou directement voisin déjà occupé par un ou plusieurs pions.
**Mouvement interdit (1)** \
-On déplace obligatoirement toute la pile se trouvant sur un troue (elle peut évidemment n'être constituée que d'un seul pion). Autrement dit, une pile de pions ne peut qu'augmenter, jamais diminuer.
+On déplace obligatoirement toute la pile se trouvant sur un trou (elle peut évidemment n'être constituée que d'un seul pion). Autrement dit, une pile de pions ne peut qu'augmenter, jamais diminuer.
**Mouvement interdit (2)** \
On ne peut jamais poser de pions sur un trou inoccupé: il le reste donc définitivement. Un pion (ou une tour) isolé de tous les cotés ne pourra donc plus changer de propriétaire.
@@ -31,4 +32,5 @@ On ne peut jamais poser de pions sur un trou inoccupé: il le reste donc défini
**Fin de partie** \
Tans qu'un joueur peut effectuer un mouvement il a l'obligation de jouer, la partie ne s'achevant que lorque plus aucun déplacement n'est possible.
On compte alors combien de pions de chaque couleur occupent le sommet des tours restantes, le vainqueur étant évidemment celui qui en totalise le plus.
-Attention! Qu'une tour comporte 1,2,... ou 5 pions, elle vaut toujours UN point.
\ No newline at end of file
+Attention! Qu'une tour comporte 1,2,... ou 5 pions, elle vaut toujours UN point.
+
diff --git a/fr/iut_fbleau/Avalam/AvalamWindow.java b/fr/iut_fbleau/Avalam/AvalamWindow.java
new file mode 100644
index 0000000..1b8a46f
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/AvalamWindow.java
@@ -0,0 +1,42 @@
+package fr.iut_fbleau.Avalam;
+
+import fr.iut_fbleau.Avalam.logic.*;
+import fr.iut_fbleau.Avalam.ui.*;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * Fenêtre principale du jeu Avalam.
+ */
+public class AvalamWindow extends JFrame {
+
+ public AvalamWindow() {
+ super("Avalam - Plateau Graphique");
+
+ setSize(750, 800);
+ setLocationRelativeTo(null);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ Tower[][] grid = BoardLoader.loadFromFile("fr/iut_fbleau/Res/Plateau.txt");
+ GameState gs = new GameState(grid);
+ ScoreManager sm = new ScoreManager();
+
+ int y = sm.count(Color.COLOR1, grid);
+ int r = sm.count(Color.COLOR2, grid);
+
+ ScoreView scoreView = new ScoreView(y, r);
+ TurnView turnView = new TurnView("Tour du joueur : Jaune");
+
+ BoardView boardView = new BoardView(gs);
+
+ JPanel top = new JPanel(new GridLayout(2,1));
+ top.add(scoreView);
+ top.add(turnView);
+
+ add(top, BorderLayout.NORTH);
+ add(boardView, BorderLayout.CENTER);
+
+ setVisible(true);
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/Color.java b/fr/iut_fbleau/Avalam/Color.java
new file mode 100644
index 0000000..1d3414a
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/Color.java
@@ -0,0 +1,28 @@
+package fr.iut_fbleau.Avalam;
+
+/**
+ * L'énumération Color représente la couleur du sommet d'une tour Avalam.
+ *
+ * COLOR1 : couleur du Joueur Jaune
+ * COLOR2 : couleur du Joueur Rouge
+ *
+ * Les couleurs Swing associées peuvent être modifiées ici pour changer tout le jeu.
+ *
+ * @version 3.0
+ */
+public enum Color {
+
+ COLOR1(java.awt.Color.YELLOW), // Joueur Jaune
+ COLOR2(java.awt.Color.RED); // Joueur Rouge
+
+ /** Couleur Swing associée */
+ private final java.awt.Color swingColor;
+
+ Color(java.awt.Color col) {
+ this.swingColor = col;
+ }
+
+ 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..822dfdd
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/Main.java
@@ -0,0 +1,7 @@
+package fr.iut_fbleau.Avalam;
+
+public class Main {
+ public static void main(String[] args) {
+ new AvalamWindow();
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/Tower.java b/fr/iut_fbleau/Avalam/Tower.java
new file mode 100644
index 0000000..bfecdd7
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/Tower.java
@@ -0,0 +1,41 @@
+package fr.iut_fbleau.Avalam ;
+
+/**
+* La classe Tower stocke la couleur de son pion haut et la hauteur de la tour.
+*
+* @version 1.0
+* @author Aurélien
+*/
+public class Tower {
+ //Attributs
+ private Color color ;
+ private byte height = 1 ;
+
+ //Constructeur
+ public Tower(Color color) {
+ this.color = color ;
+ }
+
+ //Méthodes
+ public Color getColor() {
+ return this.color ;
+ }
+
+ public byte getHeight() {
+ return this.height ;
+ }
+
+ /**
+ * Méthode qui empile une autre tour sur l'objet sur lequel le méthode est appelée.
+ * Aucune vérification de hauteur n'est effectuée.
+ */
+ public void mergeTower(Tower tower) {
+ this.color = tower.getColor();
+ this.height += tower.getHeight();
+ }
+
+ @Override
+ public String toString() {
+ return "" ;
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/logic/BoardLoader.java b/fr/iut_fbleau/Avalam/logic/BoardLoader.java
new file mode 100644
index 0000000..55000c7
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/logic/BoardLoader.java
@@ -0,0 +1,60 @@
+package fr.iut_fbleau.Avalam.logic;
+
+import fr.iut_fbleau.Avalam.Color;
+import fr.iut_fbleau.Avalam.Tower;
+import java.io.*;
+
+/**
+ * La classe BoardLoader est responsable du chargement d'un plateau Avalam
+ * depuis un fichier texte externe (généralement Plateau.txt).
+ *
+ * Le fichier doit contenir une matrice 9×9 de valeurs numériques séparées par des virgules :
+ * - 0 : case vide (trou)
+ * - 1 : pion appartenant au joueur COLOR1 (Jaune)
+ * - 2 : pion appartenant au joueur COLOR2 (Rouge)
+ *
+ * Aucun contrôle de cohérence avancé n'est effectué, le chargeur se contente
+ * d’interpréter les valeurs comme demandé.
+ *
+ * @author
+ * @version 1.0
+ */
+public class BoardLoader {
+
+ /**
+ * Charge un plateau Avalam depuis un fichier.
+ *
+ * @param path chemin du fichier plateau.
+ * @return un tableau 9×9 contenant des objets Tower ou null.
+ */
+ public static Tower[][] loadFromFile(String path) {
+
+ Tower[][] grid = new Tower[9][9];
+
+ try (BufferedReader br = new BufferedReader(new FileReader(new File(path)))) {
+
+ String line;
+ int row = 0;
+
+ while ((line = br.readLine()) != null && row < 9) {
+
+ String[] parts = line.split(",");
+
+ for (int col = 0; col < 9; col++) {
+ int v = Integer.parseInt(parts[col]);
+
+ // Interprétation des valeurs
+ if (v == 1) grid[row][col] = new Tower(Color.COLOR1);
+ else if (v == 2) grid[row][col] = new Tower(Color.COLOR2);
+ else grid[row][col] = null; // Case vide
+ }
+ row++;
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return grid;
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/logic/GameState.java b/fr/iut_fbleau/Avalam/logic/GameState.java
new file mode 100644
index 0000000..e595dcc
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/logic/GameState.java
@@ -0,0 +1,70 @@
+package fr.iut_fbleau.Avalam.logic;
+
+import fr.iut_fbleau.Avalam.Color;
+import fr.iut_fbleau.Avalam.Tower;
+
+/**
+ * La classe GameState représente l'état courant du jeu Avalam :
+ * - la grille 9×9
+ * - le joueur dont c'est le tour
+ *
+ * Elle ne contient aucune logique de déplacement ni de vérification des règles ;
+ * son rôle est uniquement de stocker et de fournir l'état du jeu.
+ *
+ * @author
+ * @version 1.0
+ */
+public class GameState {
+
+ /** Grille du plateau : 9×9 tours ou cases vides. */
+ private Tower[][] grid;
+
+ /** Joueur dont c’est le tour (COLOR1 ou COLOR2). */
+ private Color currentPlayer = Color.COLOR1;
+
+ /**
+ * Constructeur.
+ *
+ * @param grid la grille initiale du plateau.
+ */
+ public GameState(Tower[][] grid) {
+ this.grid = grid;
+ }
+
+ /**
+ * Retourne la tour présente à la position (r,c), ou null.
+ */
+ public Tower get(int r, int c) {
+ return grid[r][c];
+ }
+
+ /**
+ * Retourne la grille complète.
+ */
+ public Tower[][] getGrid() {
+ return grid;
+ }
+
+ /**
+ * Retourne le joueur dont c'est le tour.
+ */
+ public Color getCurrentPlayer() {
+ return currentPlayer;
+ }
+
+ /**
+ * Change le joueur courant : COLOR1 → COLOR2 → COLOR1.
+ */
+ public void switchPlayer() {
+ currentPlayer = (currentPlayer == Color.COLOR1) ? Color.COLOR2 : Color.COLOR1;
+ }
+
+ /**
+ * Vérifie si une position (r,c) est dans les limites du plateau.
+ *
+ * @return vrai si la position est comprise dans un plateau 9×9.
+ */
+ public boolean isInside(int r, int c) {
+ return r >= 0 && r < 9 && c >= 0 && c < 9;
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/logic/ScoreManager.java b/fr/iut_fbleau/Avalam/logic/ScoreManager.java
new file mode 100644
index 0000000..72955ab
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/logic/ScoreManager.java
@@ -0,0 +1,37 @@
+package fr.iut_fbleau.Avalam.logic;
+
+import fr.iut_fbleau.Avalam.Color;
+import fr.iut_fbleau.Avalam.Tower;
+
+/**
+ * La classe ScoreManager gère le calcul des scores
+ * selon les règles officielles d’Avalam :
+ *
+ * Un joueur gagne 1 point par tour dont le sommet (couleur) lui appartient,
+ * indépendamment de la hauteur de la tour.
+ *
+ * Cette classe n’a aucune responsabilité autre que compter.
+ *
+ * @author
+ * @version 1.0
+ */
+public class ScoreManager {
+
+ /**
+ * Compte le nombre de tours dont le sommet appartient à la couleur donnée.
+ *
+ * @param c couleur du joueur (COLOR1 ou COLOR2)
+ * @param grid grille 9×9 contenant des tours ou null
+ * @return score du joueur
+ */
+ public static int count(Color c, Tower[][] grid) {
+ int score = 0;
+
+ for (int i = 0; i < 9; i++)
+ for (int j = 0; j < 9; j++)
+ if (grid[i][j] != null && grid[i][j].getColor() == c)
+ score++;
+
+ return score;
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/logic/TurnManager.java b/fr/iut_fbleau/Avalam/logic/TurnManager.java
new file mode 100644
index 0000000..5f37453
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/logic/TurnManager.java
@@ -0,0 +1,35 @@
+package fr.iut_fbleau.Avalam.logic;
+
+import fr.iut_fbleau.Avalam.Color;
+
+/**
+ * La classe TurnManager gère le déroulement des tours d’Avalam.
+ *
+ * Son rôle est simple :
+ * - identifier le joueur dont c’est le tour
+ * - passer au joueur suivant
+ *
+ * Elle ne contient pas de logique de mouvement, ni de validation.
+ *
+ * @author
+ * @version 1.0
+ */
+public class TurnManager {
+
+ /** Joueur dont c'est le tour (COLOR1 commence la partie). */
+ private Color current = Color.COLOR1;
+
+ /**
+ * Retourne le joueur actuel.
+ */
+ public Color getPlayer() {
+ return current;
+ }
+
+ /**
+ * Passe au joueur suivant.
+ */
+ public void next() {
+ current = (current == Color.COLOR1) ? Color.COLOR2 : Color.COLOR1;
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/temp b/fr/iut_fbleau/Avalam/temp
deleted file mode 100644
index e69de29..0000000
diff --git a/fr/iut_fbleau/Avalam/ui/BoardView.java b/fr/iut_fbleau/Avalam/ui/BoardView.java
new file mode 100644
index 0000000..b5d5e9c
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/ui/BoardView.java
@@ -0,0 +1,84 @@
+package fr.iut_fbleau.Avalam.ui;
+
+import fr.iut_fbleau.Avalam.logic.GameState;
+
+import javax.swing.*;
+
+/**
+ * La classe BoardView représente l'affichage complet du plateau Avalam.
+ * Elle s’appuie sur une architecture en couches (layered pane) pour séparer proprement :
+ *
+ *
InteractionController.
+ *
+ * @author
+ * @version 1.0
+ */
+public class BoardView extends JLayeredPane {
+
+ /** Taille des pions affichés. */
+ private final int size = 50;
+
+ /** Distance entre deux cases de la grille. */
+ private final int spacing = 70;
+
+ /** Décalages pour centrer l'affichage. */
+ private final int xBase = 60, yBase = 60;
+
+ /** Accès à l'état du jeu. */
+ private GameState state;
+
+ /** Couche d'affichage des ronds verts. */
+ private HighlightLayer highlightLayer;
+
+ /** Couche d'affichage des pions. */
+ private PieceLayer pieceLayer;
+
+ /** Gestionnaire d'interactions utilisateur. */
+ private InteractionController controller;
+
+ /**
+ * Constructeur de la vue du plateau.
+ *
+ * @param state l'état du jeu Avalam
+ */
+ public BoardView(GameState state) {
+ this.state = state;
+ setLayout(null);
+
+ controller = new InteractionController(state);
+
+ highlightLayer = new HighlightLayer(xBase, yBase, spacing, size);
+ pieceLayer = new PieceLayer();
+
+ add(highlightLayer, JLayeredPane.DEFAULT_LAYER);
+ add(pieceLayer, JLayeredPane.PALETTE_LAYER);
+
+ refresh();
+ }
+
+ /**
+ * Met à jour l'affichage des couches en fonction de l'état actuel du jeu.
+ */
+ public void refresh() {
+
+ pieceLayer.displayGrid(
+ state.getGrid(),
+ xBase, yBase, spacing, size,
+
+ // Callback appelé lorsqu’un pion est cliqué
+ (r, c) -> {
+ controller.onPieceClicked(r, c);
+ highlightLayer.setLegalMoves(controller.getLegalMoves());
+ highlightLayer.repaint();
+ }
+ );
+
+ highlightLayer.repaint();
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/ui/HighlightLayer.java b/fr/iut_fbleau/Avalam/ui/HighlightLayer.java
new file mode 100644
index 0000000..81513bd
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/ui/HighlightLayer.java
@@ -0,0 +1,74 @@
+package fr.iut_fbleau.Avalam.ui;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.List;
+
+/**
+ * La classe HighlightLayer est responsable de l'affichage des
+ * cases de déplacement autorisées sous forme de cercles verts.
+ *
+ * Elle n'interagit pas directement avec les pièces, mais se contente
+ * de dessiner en arrière-plan selon une liste de positions légales.
+ *
+ * @author
+ * @version 1.0
+ */
+public class HighlightLayer extends JPanel {
+
+ private int xBase, yBase, spacing, size;
+
+ /** Liste des positions jouables (cases en vert). */
+ private ListInteractionController gère entièrement
+ * la logique d'interaction de l'utilisateur :
+ *
+ * PieceButton représente graphiquement une tour Avalam.
+ * Il s'agit d'un bouton rond :
+ *
+ * PieceLayer gère l'affichage des pions
+ * (sous forme de PieceButton) sur la grille.
+ *
+ * Elle s'occupe uniquement :
+ * ScoreView affiche les scores actuels des deux joueurs.
+ *
+ * Elle est purement graphique : aucune logique de calcul n'est présente.
+ *
+ * @author
+ * @version 1.0
+ */
+public class ScoreView extends JPanel {
+
+ private JLabel scoreY, scoreR;
+
+ /**
+ * Constructeur.
+ *
+ * @param y score initial du joueur jaune
+ * @param r score initial du joueur rouge
+ */
+ public ScoreView(int y, int r) {
+ setBackground(new Color(200,200,200));
+ setLayout(new FlowLayout());
+
+ scoreY = new JLabel("Score Jaune : " + y);
+ scoreR = new JLabel("Score Rouge : " + r);
+
+ scoreY.setFont(new Font("Arial", Font.BOLD, 18));
+ scoreR.setFont(new Font("Arial", Font.BOLD, 18));
+
+ add(scoreY);
+ add(new JLabel(" | "));
+ add(scoreR);
+ }
+
+ /**
+ * Met à jour l'affichage des scores.
+ */
+ public void updateScores(int y, int r) {
+ scoreY.setText("Score Jaune : " + y);
+ scoreR.setText("Score Rouge : " + r);
+ }
+}
diff --git a/fr/iut_fbleau/Avalam/ui/TurnView.java b/fr/iut_fbleau/Avalam/ui/TurnView.java
new file mode 100644
index 0000000..5b28c90
--- /dev/null
+++ b/fr/iut_fbleau/Avalam/ui/TurnView.java
@@ -0,0 +1,41 @@
+package fr.iut_fbleau.Avalam.ui;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * La classe TurnView affiche le joueur à qui c'est le tour.
+ *
+ * Elle agit comme une simple bannière d’information,
+ * mise à jour par la logique du jeu.
+ *
+ * @author
+ * @version 1.0
+ */
+public class TurnView extends JPanel {
+
+ private JLabel text;
+
+ /**
+ * Constructeur.
+ *
+ * @param initial message initial à afficher
+ */
+ public TurnView(String initial) {
+ setBackground(new Color(220,220,220));
+
+ text = new JLabel(initial);
+ text.setFont(new Font("Arial", Font.BOLD, 20));
+
+ add(text);
+ }
+
+ /**
+ * Met à jour le texte affichant le joueur courant.
+ *
+ * @param s message à afficher
+ */
+ public void setTurn(String s) {
+ text.setText(s);
+ }
+}
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