diff --git a/src/main/Makefile b/src/main/Makefile
index e8cc943..4bbf8c0 100644
--- a/src/main/Makefile
+++ b/src/main/Makefile
@@ -4,16 +4,16 @@ JC = javac
 JCFLAGS = -encoding UTF-8 -implicit:none -cp classes -d classes
 
 JVM = java
-JVMFLAGS = -cp classes
+JVMFLAGS = -cp "classes:mariadb.jar"
+MANIFEST_FILE = META-INF/MANIFEST.MF
 
 ### RÈGLES ESSENTIELLES ###
 
-Main.class: Main.java java/controller/MenuController.class java/view/MenuView.class java/controller/GameController.class
+Main.class: Main.java  java/view/MenuView.class java/controller/GameController.class java/view/App.class
 	$(JC) $(JCFLAGS) Main.java
 
-# Compilation des contrôleurs
-java/controller/MenuController.class: java/controller/MenuController.java java/model/MenuModel.class java/view/MenuView.class java/controller/NewListener.class java/controller/QuiListener.class java/controller/ResListener.class
-	$(JC) $(JCFLAGS) java/controller/MenuController.java
+###java/controller/MenuController.class: java/controller/MenuController.java java/model/MenuModel.class java/view/MenuView.class java/controller/NewListener.class java/controller/QuiListener.class java/controller/SeriesSelector.class
+###$(JC) $(JCFLAGS) java/controller/MenuController.java
 
 java/controller/NewListener.class: java/controller/NewListener.java
 	$(JC) $(JCFLAGS) java/controller/NewListener.java
@@ -21,10 +21,13 @@ java/controller/NewListener.class: java/controller/NewListener.java
 java/controller/QuiListener.class: java/controller/QuiListener.java
 	$(JC) $(JCFLAGS) java/controller/QuiListener.java
 
-java/controller/ResListener.class: java/controller/ResListener.java java/view/GameView.class java/view/App.class 
+java/controller/ResListener.class: java/controller/ResListener.java java/view/GameView.class java/view/App.class
 	$(JC) $(JCFLAGS) java/controller/ResListener.java
 
-java/controller/GameController.class: java/controller/GameController.java java/controller/TilePlacer.class java/model/Tile.class java/controller/CameraController.class java/controller/HexagonMouseListener.class
+java/controller/SeriesSelector.class: java/controller/SeriesSelector.java java/view/GameView.class
+	$(JC) $(JCFLAGS) java/controller/SeriesSelector.java
+
+java/controller/GameController.class: java/controller/GameController.java java/controller/ScoreGameContext.class java/controller/TilePlacer.class java/model/Tile.class java/controller/CameraController.class java/controller/HexagonMouseListener.class java/model/TileDatabaseManager.class java/controller/SendScore.class java/controller/GameEndListener.class
 	$(JC) $(JCFLAGS) java/controller/GameController.java
 
 java/controller/MouseWheelController.class: java/controller/MouseWheelController.java java/view/HexagonTile.class java/controller/GameController.class
@@ -39,17 +42,15 @@ java/controller/CameraController.class: java/controller/CameraController.java ja
 java/controller/GameContext.class: java/controller/GameContext.java java/view/HexagonTile.class
 	$(JC) $(JCFLAGS) java/controller/GameContext.java
 
-# Compilation des vues
-java/view/GameView.class: java/view/GameView.java java/controller/MouseWheelController.class java/controller/GameController.class java/view/HexagonTile.class
+java/view/GameView.class: java/view/GameView.java java/view/App.class java/view/ScoreView.class java/controller/MouseWheelController.class java/controller/GameController.class java/view/HexagonTile.class
 	$(JC) $(JCFLAGS) java/view/GameView.java
 
-java/view/MenuView.class: java/view/MenuView.java java/view/BtnPerso.class java/view/ButtonHoverListener.class
+java/view/MenuView.class: java/view/MenuView.java java/view/BtnPerso.class java/view/ButtonHoverListener.class java/controller/SeriesSelector.class
 	$(JC) $(JCFLAGS) java/view/MenuView.java
 
 java/view/HexagonTile.class: java/view/HexagonTile.java java/model/Tile.class java/model/TerrainType.class
 	$(JC) $(JCFLAGS) java/view/HexagonTile.java
 
-# Compilation des modèles
 java/model/MenuModel.class: java/model/MenuModel.java
 	$(JC) $(JCFLAGS) java/model/MenuModel.java
 
@@ -59,17 +60,12 @@ java/model/Tile.class: java/model/Tile.java java/model/TerrainType.class
 java/model/TerrainType.class: java/model/TerrainType.java
 	$(JC) $(JCFLAGS) java/model/TerrainType.java
 
-# Compilation des composants individuels
 java/view/BtnPerso.class: java/view/BtnPerso.java
 	$(JC) $(JCFLAGS) java/view/BtnPerso.java
 
 java/view/ButtonHoverListener.class: java/view/ButtonHoverListener.java
 	$(JC) $(JCFLAGS) java/view/ButtonHoverListener.java
 
-java/view/App.class: java/view/App.java
-	$(JC) $(JCFLAGS) java/view/App.java
-
-# Compilation des handlers
 java/controller/MousePressHandler.class: java/controller/MousePressHandler.java java/controller/CameraControllerListener.class
 	$(JC) $(JCFLAGS) java/controller/MousePressHandler.java
 
@@ -82,12 +78,51 @@ java/controller/CameraControllerListener.class: java/controller/CameraController
 java/controller/TilePlacer.class: java/controller/TilePlacer.java
 	$(JC) $(JCFLAGS) java/controller/TilePlacer.java
 
+java/model/TileDatabaseManager.class: java/model/TileDatabaseManager.java java/model/Tile.class
+	$(JC) $(JCFLAGS) java/model/TileDatabaseManager.java
+
+java/controller/ScoreGameContext.class: java/controller/ScoreGameContext.java java/controller/GameContext.class java/model/Pocket.class java/model/TerrainType.class java/view/HexagonTile.class
+	$(JC) $(JCFLAGS) java/controller/ScoreGameContext.java
+
+java/controller/SerieListener.class: java/controller/SerieListener.java java/controller/GameController.class
+	$(JC) $(JCFLAGS) java/controller/SerieListener.java
+
+java/model/Pocket.class: java/model/Pocket.java java/model/TerrainType.class
+	$(JC) $(JCFLAGS) java/model/Pocket.java
+
+java/controller/SendScore.class: java/controller/SendScore.java
+	$(JC) $(JCFLAGS) java/controller/SendScore.java
+
+java/controller/GameEndListener.class: java/controller/GameEndListener.java
+	$(JC) $(JCFLAGS) java/controller/GameEndListener.java
+
+java/view/App.class: java/view/App.java
+	$(JC) $(JCFLAGS) java/view/App.java
+
+java/view/ScoreView.class: java/view/ScoreView.java java/view/App.class java/controller/AllScore.class java/view/BtnPerso.class 
+	$(JC) $(JCFLAGS) java/view/ScoreView.java
+
+java/controller/AllScore.class: java/controller/AllScore.java
+	$(JC) $(JCFLAGS) java/controller/AllScore.java
+
 ### RÈGLE POUR COPIER LES IMAGES ###
 
 copy-images:
 	mkdir -p classes/java/view/img
 	if [ -d java/view/img ]; then cp -r java/view/img/* classes/java/view/img/; else echo "Le répertoire java/view/img n'existe pas."; fi
 
+$(MANIFEST_FILE):
+	mkdir -p META-INF
+	echo "Manifest-Version: 1.0" > $(MANIFEST_FILE)
+	echo "Main-Class: main.Main" >> $(MANIFEST_FILE)
+	echo "Class-Path: mariadb.jar" >> $(MANIFEST_FILE)
+
+### ARCHIVE JAR ###
+
+Main.jar: Main.class copy-images $(MANIFEST_FILE)
+	mkdir -p classes/java/view/img  
+	jar cfm Main.jar $(MANIFEST_FILE) -C classes .
+
 ### RÈGLES OPTIONNELLES ###
 
 run: Main.class copy-images
@@ -95,12 +130,10 @@ run: Main.class copy-images
 
 clean:
 	-rm -f classes/**/*.class
-
-mrproper: clean
 	-rm -rf classes/java/view/img
 
 ### BUTS FACTICES ###
 
-.PHONY: run clean mrproper copy-images
+.PHONY: run clean copy-images
 
 ### FIN ###
diff --git a/src/main/java/model/Pocket.java b/src/main/java/model/Pocket.java
index 4ae2071..1eff0e8 100644
--- a/src/main/java/model/Pocket.java
+++ b/src/main/java/model/Pocket.java
@@ -1,40 +1,81 @@
+// src/main/java/model/Pocket.java
 package model;
 
 import java.awt.Point;
 import java.util.HashSet;
 import java.util.Set;
 
+/**
+ * La classe <code>Pocket</code> représente un groupe de tuiles adjacentes
+ * d'un même type de terrain dans le jeu.
+ */
 public class Pocket {
     private TerrainType terrainType;  // Type de terrain de cette Pocket
     private Set<Point> tiles;  // Ensemble des positions des tuiles de la Pocket
 
+    /**
+     * Constructeur de la classe <code>Pocket</code>.
+     *
+     * @param terrainType Le type de terrain associé à cette Pocket.
+     */
     public Pocket(TerrainType terrainType) {
         this.terrainType = terrainType;
         this.tiles = new HashSet<>();
     }
 
+    /**
+     * Récupère le type de terrain de cette Pocket.
+     *
+     * @return Le type de terrain de cette Pocket.
+     */
     public TerrainType getTerrainType() {
         return terrainType;
     }
 
+    /**
+     * Obtient la taille de cette Pocket, c'est-à-dire le nombre de tuiles.
+     *
+     * @return La taille de la Pocket.
+     */
     public int getSize() {
         return tiles.size();
     }
 
+    /**
+     * Ajoute une tuile à cette Pocket à une position donnée.
+     *
+     * @param position La position de la tuile à ajouter.
+     */
     public void addTile(Point position) {
         tiles.add(position);
     }
 
+    /**
+     * Vérifie si une tuile à une position donnée est présente dans cette Pocket.
+     *
+     * @param position La position de la tuile à vérifier.
+     * @return <code>true</code> si la tuile est présente, sinon <code>false</code>.
+     */
     public boolean containsTile(Point position) {
         return tiles.contains(position);
     }
 
+    /**
+     * Fusionne cette Pocket avec une autre Pocket si elles partagent le même type de terrain.
+     *
+     * @param other La Pocket à fusionner.
+     */
     public void merge(Pocket other) {
         if (this.terrainType == other.terrainType) {
             this.tiles.addAll(other.tiles);
         }
     }
 
+    /**
+     * Calcule le score de cette Pocket basé sur la taille au carré.
+     *
+     * @return Le score de la Pocket.
+     */
     public int calculateScore() {
         return getSize() * getSize();  // La taille au carré donne le score
     }
diff --git a/src/main/java/model/TerrainType.java b/src/main/java/model/TerrainType.java
index 2e6c009..0be0977 100644
--- a/src/main/java/model/TerrainType.java
+++ b/src/main/java/model/TerrainType.java
@@ -1,5 +1,14 @@
+// src/main/java/model/TerrainType.java
 package model;
 
+/**
+ * L'énumération <code>TerrainType</code> représente les différents types de terrains
+ * disponibles dans le jeu.
+ */
 public enum TerrainType {
-    MER, CHAMP, PRE, FORET, MONTAGNE
+    MER,     // Représente le type de terrain "mer"
+    CHAMP,   // Représente le type de terrain "champ"
+    PRE,     // Représente le type de terrain "pré"
+    FORET,   // Représente le type de terrain "forêt"
+    MONTAGNE // Représente le type de terrain "montagne"
 }
diff --git a/src/main/java/model/Tile.java b/src/main/java/model/Tile.java
index ff5048a..703e0d6 100644
--- a/src/main/java/model/Tile.java
+++ b/src/main/java/model/Tile.java
@@ -1,11 +1,24 @@
+// src/main/java/model/Tile.java
 package model;
 
+/**
+ * La classe <code>Tile</code> représente une tuile dans le jeu, qui peut contenir un ou deux types de terrains.
+ * Chaque tuile a un identifiant unique, un tableau de types de terrains, et gère sa rotation.
+ */
 public class Tile {
     private int id;  // ID de la tuile
     private TerrainType[] terrains;  // Tableau contenant deux types de terrains (ex. MER, FORET)
     private int segmentsForTerrain1;  // Nombre de segments pour le premier terrain
     private int rotation;  // Rotation de la tuile (en multiple de 60 degrés)
 
+    /**
+     * Constructeur pour créer une nouvelle tuile avec deux types de terrains.
+     *
+     * @param id                L'identifiant de la tuile.
+     * @param terrain1         Le premier type de terrain.
+     * @param terrain2         Le deuxième type de terrain.
+     * @param segmentsForTerrain1 Le nombre de segments pour le premier terrain.
+     */
     public Tile(int id, TerrainType terrain1, TerrainType terrain2, int segmentsForTerrain1) {
         this.id = id;
         this.terrains = new TerrainType[]{terrain1, terrain2};
@@ -13,7 +26,12 @@ public class Tile {
         this.rotation = 0;  // Initialisation de la rotation à 0
     }
 
-    // Renvoie le terrain pour l'index donné (0 ou 1)
+    /**
+     * Renvoie le terrain pour l'index donné (0 ou 1).
+     *
+     * @param index L'index du terrain à récupérer.
+     * @return Le type de terrain à l'index spécifié, ou null si l'index est invalide.
+     */
     public TerrainType getTerrain(int index) {
         if (index >= 0 && index < terrains.length) {
             return terrains[index];
@@ -21,7 +39,12 @@ public class Tile {
         return null;  // Retourne null si l'index est invalide
     }
 
-    // Méthode pour obtenir le terrain associé à un segment spécifique (prend en compte la rotation)
+    /**
+     * Méthode pour obtenir le terrain associé à un segment spécifique (prend en compte la rotation).
+     *
+     * @param segmentIndex L'index du segment.
+     * @return Le type de terrain associé au segment spécifié.
+     */
     public TerrainType getTerrainForSegment(int segmentIndex) {
         int adjustedIndex = (segmentIndex - rotation + 6) % 6;
         if (adjustedIndex < segmentsForTerrain1) {
@@ -31,18 +54,34 @@ public class Tile {
         }
     }
 
+    /**
+     * Fait tourner la tuile dans le sens horaire.
+     */
     public void rotateClockwise() {
         rotation = (rotation + 1) % 6;
     }
 
+    /**
+     * Fait tourner la tuile dans le sens antihoraire.
+     */
     public void rotateCounterClockwise() {
         rotation = (rotation + 5) % 6;  // Tourner dans le sens inverse
     }
 
+    /**
+     * Renvoie la rotation actuelle de la tuile.
+     *
+     * @return La rotation de la tuile en multiples de 60 degrés.
+     */
     public int getRotation() {
         return rotation;
     }
 
+    /**
+     * Renvoie l'identifiant de la tuile.
+     *
+     * @return L'identifiant de la tuile.
+     */
     public int getId() {
         return id;
     }
diff --git a/src/main/java/model/TileDatabaseManager.java b/src/main/java/model/TileDatabaseManager.java
index f2a3ad9..7b7aa85 100644
--- a/src/main/java/model/TileDatabaseManager.java
+++ b/src/main/java/model/TileDatabaseManager.java
@@ -1,14 +1,25 @@
+// src/main/java/model/TileDatabaseManager.java
 package model;
 
 import java.sql.*;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * La classe <code>TileDatabaseManager</code> gère les interactions avec la base de données
+ * pour récupérer les tuiles associées à une série donnée.
+ */
 public class TileDatabaseManager {
     private static final String DB_URL = "jdbc:mariadb://dwarves.iut-fbleau.fr/akagundu";
     private static final String USER = "akagundu";
     private static final String PASSWORD = "dersim62Lodek";
 
+    /**
+     * Récupère les tuiles associées à une série spécifique à partir de la base de données.
+     *
+     * @param idSeries L'identifiant de la série pour laquelle les tuiles doivent être récupérées.
+     * @return Une liste d'objets <code>Tile</code> associés à la série spécifiée.
+     */
     public List<Tile> getTilesBySeries(int idSeries) {
         List<Tile> tiles = new ArrayList<>();
         String query = "SELECT id, couleur1, couleur2, chiffre FROM Tuile WHERE id_serie = ? ORDER BY id ASC";
@@ -38,7 +49,4 @@ public class TileDatabaseManager {
         }
         return tiles;
     }
-    
-    
-    
 }
diff --git a/src/main/java/view/App.java b/src/main/java/view/App.java
index 0f07327..0065bd0 100644
--- a/src/main/java/view/App.java
+++ b/src/main/java/view/App.java
@@ -3,17 +3,31 @@ package view;
 import javax.swing.*;
 import java.awt.*;
 
+/**
+ * La classe <code>App</code> représente l'application de jeu qui gère les vues de l'interface utilisateur.
+ * Elle utilise un <code>CardLayout</code> pour naviguer entre différentes vues telles que le menu, le jeu et le score.
+ */
 public class App {
+    /** Nom de la vue du menu. */
     public static final String MENU_VIEW = "MenuView";
+    
+    /** Nom de la vue du jeu. */
     public static final String GAME_VIEW = "GameView";
+    
+    /** Nom de la vue des scores. */
     public static final String SCORE_VIEW = "ScoreView";
 
+    /** La fenêtre principale de l'application. */
     private static JFrame frame;
+    
+    /** Le layout utilisé pour gérer l'affichage des vues. */
     private static CardLayout cardLayout;
+    
+    /** Le panneau principal contenant les différentes vues. */
     private static JPanel mainPanel;
 
     static {
-        frame = new JFrame("DorfJavatik");
+        frame = new JFrame("Application de Jeu");
         cardLayout = new CardLayout();
         mainPanel = new JPanel(cardLayout);
         frame.setContentPane(mainPanel);
@@ -22,16 +36,32 @@ public class App {
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
 
+    /**
+     * Retourne l'instance de la fenêtre principale.
+     * 
+     * @return L'instance de <code>JFrame</code> de l'application.
+     */
     public static JFrame getInstance() {
         return frame;
     }
 
+    /**
+     * Ajoute une vue au panneau principal de l'application.
+     * 
+     * @param view Le panneau de la vue à ajouter.
+     * @param viewName Le nom sous lequel la vue sera identifiée.
+     */
     public static void addView(JPanel view, String viewName) {
         mainPanel.add(view, viewName);
     }
 
+    /**
+     * Affiche la vue spécifiée dans le panneau principal.
+     * 
+     * @param viewName Le nom de la vue à afficher.
+     */
     public static void showView(String viewName) {
         cardLayout.show(mainPanel, viewName);
         frame.setVisible(true);
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/view/BtnPerso.java b/src/main/java/view/BtnPerso.java
index 91d4f77..9b87fe9 100644
--- a/src/main/java/view/BtnPerso.java
+++ b/src/main/java/view/BtnPerso.java
@@ -3,12 +3,20 @@ package view;
 import javax.swing.JButton;
 import java.awt.*;
 
-
+/**
+ * La classe <code>BtnPerso</code> représente un bouton personnalisé utilisé dans l'interface utilisateur.
+ * Elle étend la classe <code>JButton</code> et applique des styles spécifiques pour le rendu du bouton.
+ */
 public class BtnPerso extends JButton {
 
+    /**
+     * Constructeur de la classe <code>BtnPerso</code>.
+     * 
+     * @param text Le texte à afficher sur le bouton.
+     */
     public BtnPerso(String text){
         super(text);
-        setFont(new Font("Helvetica", Font.BOLD,25));
+        setFont(new Font("Helvetica", Font.BOLD, 25));
         setContentAreaFilled(false);
         setForeground(Color.BLACK);
         setBorderPainted(false);
@@ -16,9 +24,7 @@ public class BtnPerso extends JButton {
         setFocusPainted(false);
         setBackground(new Color(243, 171, 115, 150));
 
-        Dimension d = new Dimension(200,50);
+        Dimension d = new Dimension(200, 50);
         setPreferredSize(d);
     }
-
-    
 }
diff --git a/src/main/java/view/ButtonHoverListener.java b/src/main/java/view/ButtonHoverListener.java
index 81cbf30..d941f3f 100644
--- a/src/main/java/view/ButtonHoverListener.java
+++ b/src/main/java/view/ButtonHoverListener.java
@@ -4,11 +4,23 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.Color;
 
+/**
+ * La classe <code>ButtonHoverListener</code> écoute les événements de la souris pour les boutons de type <code>BtnPerso</code>.
+ * Elle change la couleur de fond du bouton lorsque la souris survole ou quitte le bouton.
+ */
 public class ButtonHoverListener extends MouseAdapter {
 
-    private final Color hoverColor = new Color(200, 150, 100, 200); // Couleur de hover avec transparence
-    private final Color normalColor = new Color(243, 171, 115, 150); // Couleur normale avec transparence
+    /** Couleur de survol avec transparence. */
+    private final Color hoverColor = new Color(200, 150, 100, 200);
+    
+    /** Couleur normale avec transparence. */
+    private final Color normalColor = new Color(243, 171, 115, 150);
 
+    /**
+     * Change la couleur de fond du bouton lorsqu'il est survolé par la souris.
+     * 
+     * @param e L'événement de souris déclenché lorsque la souris entre dans le bouton.
+     */
     @Override
     public void mouseEntered(MouseEvent e) {
         if (e.getSource() instanceof BtnPerso) { // Applique uniquement aux boutons de type BtnPerso
@@ -17,6 +29,11 @@ public class ButtonHoverListener extends MouseAdapter {
         }
     }
 
+    /**
+     * Restaure la couleur de fond normale du bouton lorsque la souris quitte le bouton.
+     * 
+     * @param e L'événement de souris déclenché lorsque la souris quitte le bouton.
+     */
     @Override
     public void mouseExited(MouseEvent e) {
         if (e.getSource() instanceof BtnPerso) { // Applique uniquement aux boutons de type BtnPerso
diff --git a/src/main/java/view/GameView.java b/src/main/java/view/GameView.java
index fadd2a9..9cdc3af 100644
--- a/src/main/java/view/GameView.java
+++ b/src/main/java/view/GameView.java
@@ -6,15 +6,39 @@ import controller.*;
 import javax.swing.*;
 import java.awt.*;
 
+/**
+ * La classe <code>GameView</code> représente la vue principale du jeu.
+ * Elle gère l'affichage de la grille hexagonale, la prévisualisation de la prochaine tuile,
+ * et l'affichage du score. Elle implémente l'interface <code>GameEndListener</code>
+ * pour gérer la fin du jeu.
+ */
 public class GameView extends JPanel implements GameEndListener {
+    /** Le panneau de la grille hexagonale. */
     private JPanel gridPanel;
+    
+    /** La prévisualisation de la prochaine tuile. */
     private HexagonTile nextTilePreview;
+    
+    /** Le contrôleur du jeu. */
     private GameController gameController;
+    
+    /** Le contrôleur de la caméra. */
     private CameraController cameraController;
+    
+    /** Le contexte du jeu. */
     private GameContext gameContext;
+    
+    /** Étiquette affichant le score actuel. */
     private JLabel scoreLabel;
+    
+    /** Identifiant de la série de tuiles. */
     private int seriesId;
 
+    /**
+     * Constructeur de la classe <code>GameView</code>.
+     * 
+     * @param seriesId L'identifiant de la série de tuiles à charger.
+     */
     public GameView(int seriesId) {
         this.seriesId = seriesId;
         setLayout(new BorderLayout());
@@ -55,6 +79,11 @@ public class GameView extends JPanel implements GameEndListener {
         controlPanel.add(backButton);
     }
 
+    /**
+     * Crée et retourne un panneau représentant la grille hexagonale.
+     * 
+     * @return Un <code>JPanel</code> configuré pour la grille hexagonale.
+     */
     private JPanel createHexagonGrid() {
         JPanel panel = new JPanel();
         panel.setLayout(null);
@@ -63,6 +92,9 @@ public class GameView extends JPanel implements GameEndListener {
         return panel;
     }
 
+    /**
+     * Centre le panneau de la grille dans la vue.
+     */
     private void centerGridPanel() {
         int centerX = (getWidth() - gridPanel.getPreferredSize().width) / 2;
         int centerY = (getHeight() - gridPanel.getPreferredSize().height) / 2;
@@ -70,6 +102,11 @@ public class GameView extends JPanel implements GameEndListener {
         gameContext.repaintGrid(gridPanel);
     }
 
+    /**
+     * Crée et retourne un panneau de contrôle contenant les informations sur la prochaine tuile et le score.
+     * 
+     * @return Un <code>JPanel</code> configuré pour le panneau de contrôle.
+     */
     private JPanel createControlPanel() {
         JPanel panel = new JPanel();
         panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
@@ -92,6 +129,11 @@ public class GameView extends JPanel implements GameEndListener {
         return panel;
     }
 
+    /**
+     * Méthode appelée lorsque le jeu se termine.
+     * 
+     * @param finalScore Le score final du jeu.
+     */
     @Override
     public void onGameEnd(int finalScore) {
         SwingUtilities.invokeLater(() -> {
diff --git a/src/main/java/view/HexagonTile.java b/src/main/java/view/HexagonTile.java
index 28945ee..fd16f47 100644
--- a/src/main/java/view/HexagonTile.java
+++ b/src/main/java/view/HexagonTile.java
@@ -7,11 +7,27 @@ import javax.swing.*;
 import java.awt.*;
 import java.awt.geom.Path2D;
 
+/**
+ * La classe <code>HexagonTile</code> représente une tuile hexagonale dans le jeu.
+ * Elle gère l'affichage d'une tuile avec ses segments de terrain et 
+ * indique si la tuile est un placeholder.
+ */
 public class HexagonTile extends JPanel {
+    /** La tuile associée à cet hexagone. */
     private Tile tile;
+    
+    /** La position de l'hexagone sur la grille. */
     private Point position;
-    private boolean isPlaceholder;  // Indicateur si l'hexagone est un placeholder
+    
+    /** Indicateur si l'hexagone est un placeholder. */
+    private boolean isPlaceholder;
 
+    /**
+     * Constructeur de la classe <code>HexagonTile</code>.
+     * 
+     * @param position La position de l'hexagone sur la grille.
+     * @param isPlaceholder Indique si cet hexagone est un placeholder.
+     */
     public HexagonTile(Point position, boolean isPlaceholder) {
         this.position = position;
         this.isPlaceholder = isPlaceholder;
@@ -19,24 +35,50 @@ public class HexagonTile extends JPanel {
         setPreferredSize(new Dimension(100, 100));
     }
 
+    /**
+     * Récupère la position de l'hexagone.
+     * 
+     * @return La position de l'hexagone.
+     */
     public Point getPosition() {
         return position;
     }
 
+    /**
+     * Définit la tuile associée à cet hexagone.
+     * 
+     * @param tile La tuile à associer.
+     */
     public void setTile(Tile tile) {
         this.tile = tile;
         this.isPlaceholder = false;  // Une fois la tuile posée, ce n'est plus un placeholder
         repaint();
     }
 
+    /**
+     * Récupère la tuile associée à cet hexagone.
+     * 
+     * @return La tuile associée.
+     */
     public Tile getTile() {
         return tile;
     }
 
+    /**
+     * Vérifie si l'hexagone est rempli avec une tuile.
+     * 
+     * @return <code>true</code> si l'hexagone contient une tuile, sinon <code>false</code>.
+     */
     public boolean isFilled() {
         return this.tile != null;
     }
 
+    /**
+     * Méthode de peinture du composant.
+     * Dessine l'hexagone et ses segments de terrain, ou un placeholder si aucun terrain n'est présent.
+     * 
+     * @param g Le contexte graphique dans lequel dessiner.
+     */
     @Override
     protected void paintComponent(Graphics g) {
         super.paintComponent(g);
@@ -62,6 +104,14 @@ public class HexagonTile extends JPanel {
         g2d.draw(largeHexagon);
     }
 
+    /**
+     * Dessine les segments de terrain associés à la tuile.
+     * 
+     * @param g2d Le contexte graphique dans lequel dessiner.
+     * @param centerX La coordonnée X du centre de l'hexagone.
+     * @param centerY La coordonnée Y du centre de l'hexagone.
+     * @param radius Le rayon de l'hexagone.
+     */
     private void drawTerrainSegments(Graphics2D g2d, int centerX, int centerY, int radius) {
         // Parcourt les segments de 0 à 5 pour dessiner chaque segment en fonction du terrain associé
         for (int i = 0; i < 6; i++) {
@@ -71,6 +121,14 @@ public class HexagonTile extends JPanel {
         }
     }
 
+    /**
+     * Crée un hexagone à partir des coordonnées centrales et du rayon.
+     * 
+     * @param centerX La coordonnée X du centre de l'hexagone.
+     * @param centerY La coordonnée Y du centre de l'hexagone.
+     * @param radius Le rayon de l'hexagone.
+     * @return La forme hexagonale créée.
+     */
     private Shape createHexagon(int centerX, int centerY, int radius) {
         Path2D hexagon = new Path2D.Double();
         for (int i = 0; i < 6; i++) {
@@ -87,6 +145,12 @@ public class HexagonTile extends JPanel {
         return hexagon;
     }
 
+    /**
+     * Récupère la couleur associée à un type de terrain.
+     * 
+     * @param terrain Le type de terrain à évaluer.
+     * @return La couleur correspondant au type de terrain.
+     */
     private Color getTerrainColor(TerrainType terrain) {
         if (terrain == null) {
             return Color.WHITE;
diff --git a/src/main/java/view/HowToPlayView.java b/src/main/java/view/HowToPlayView.java
index e0fee4d..25f5ca0 100644
--- a/src/main/java/view/HowToPlayView.java
+++ b/src/main/java/view/HowToPlayView.java
@@ -3,8 +3,17 @@ package view;
 import javax.swing.*;
 import java.awt.*;
 
+/**
+ * La classe <code>HowToPlayView</code> représente une boîte de dialogue
+ * qui fournit des instructions sur le fonctionnement du jeu.
+ */
 public class HowToPlayView extends JDialog {
 
+    /**
+     * Constructeur de la classe <code>HowToPlayView</code>.
+     * 
+     * @param parent La fenêtre parent qui déclenche cette boîte de dialogue.
+     */
     public HowToPlayView(JFrame parent) {
         super(parent, "Comment Jouer", true);
         
@@ -21,6 +30,7 @@ public class HowToPlayView extends JDialog {
         JLabel instruction2 = new JLabel("Poser des tuiles : clique gauche sur un petit hexagone");
         JLabel instruction3 = new JLabel("Orientation des tuiles : Molette de la souris");
 
+        // Ajoute les instructions à la boîte de dialogue
         for (JLabel label : new JLabel[]{instruction1, instruction2, instruction3}) {
             label.setFont(new Font("Helvetica", Font.PLAIN, 20));
             label.setAlignmentX(Component.CENTER_ALIGNMENT);
diff --git a/src/main/java/view/MenuView.java b/src/main/java/view/MenuView.java
index 7e2170e..64d5634 100644
--- a/src/main/java/view/MenuView.java
+++ b/src/main/java/view/MenuView.java
@@ -5,6 +5,11 @@ import controller.SeriesSelector;
 import javax.swing.*;
 import java.awt.*;
 
+/**
+ * La classe <code>MenuView</code> représente l'interface utilisateur principale
+ * du menu du jeu, incluant des options pour reprendre une partie, démarrer une nouvelle partie,
+ * et afficher les instructions du jeu.
+ */
 public class MenuView extends JPanel {
 
     private BtnPerso resumeButton;
@@ -21,15 +26,26 @@ public class MenuView extends JPanel {
     private ImageIcon quit;
     private JLabel labelImg;
 
+    /**
+     * Constructeur de la classe <code>MenuView</code>.
+     * Initialise le menu et ses composants.
+     */
     public MenuView() {
         initMenu();
     }
 
+    /**
+     * Définit le sélecteur de séries pour le menu.
+     * 
+     * @param seriesSelector Le sélecteur de séries à définir.
+     */
     public void setSeriesSelector(SeriesSelector seriesSelector) {
         this.seriesSelector = seriesSelector;
     }
 
-    // Méthode pour afficher les boutons de sélection de série
+    /**
+     * Affiche les boutons de sélection de série.
+     */
     public void showSeriesButtons() {
         howToPlayPanel.setVisible(false);
         centeredPanel.removeAll();
@@ -40,7 +56,9 @@ public class MenuView extends JPanel {
         repaint();
     }
 
-    // Méthode pour afficher/masquer le panneau "Comment jouer"
+    /**
+     * Affiche ou masque le panneau "Comment jouer".
+     */
     private void toggleHowToPlay() {
         seriesPanel.setVisible(false);
         howToPlayPanel.setVisible(!howToPlayPanel.isVisible());
@@ -51,6 +69,9 @@ public class MenuView extends JPanel {
         repaint();
     }
 
+    /**
+     * Initialise le menu et ses composants.
+     */
     private void initMenu() {
         panelCote = new JPanel(new GridBagLayout());
         GridBagConstraints gbc = new GridBagConstraints();
@@ -116,6 +137,11 @@ public class MenuView extends JPanel {
         add(centeredPanel, BorderLayout.CENTER);
     }
 
+    /**
+     * Crée et retourne le panneau affichant les instructions de jeu.
+     * 
+     * @return Un panneau contenant les instructions de jeu.
+     */
     private JPanel createHowToPlayPanel() {
         JPanel panel = new JPanel();
         panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
@@ -145,6 +171,11 @@ public class MenuView extends JPanel {
         return panel;
     }
 
+    /**
+     * Crée et retourne le panneau de sélection des séries.
+     * 
+     * @return Un panneau contenant les boutons de sélection de séries.
+     */
     private JPanel createSeriesPanel() {
         JPanel panel = new JPanel(new GridLayout(2, 2, 10, 10));
         panel.setOpaque(false);
@@ -172,4 +203,4 @@ public class MenuView extends JPanel {
         super.paintComponent(g);
         g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/view/ScoreView.java b/src/main/java/view/ScoreView.java
index 471db06..161ef35 100644
--- a/src/main/java/view/ScoreView.java
+++ b/src/main/java/view/ScoreView.java
@@ -7,18 +7,33 @@ import java.util.ArrayList;
 import java.util.Collections;
 import controller.AllScore;
 
+/**
+ * La classe <code>ScoreView</code> représente l'interface utilisateur
+ * affichant le score final du joueur ainsi que le top 10 des scores
+ * pour une série spécifique à la fin d'une partie.
+ */
 public class ScoreView extends JPanel {
     private int seriesId;
     private int finalScore;
-    private final Color hoverColor = new Color(200, 150, 100,150);
+    private final Color hoverColor = new Color(200, 150, 100, 150);
     private final Color normalColor = new Color(243, 171, 115, 150); // Couleur avec transparence
 
+    /**
+     * Constructeur de la classe <code>ScoreView</code>.
+     * 
+     * @param seriesId L'identifiant de la série.
+     * @param finalScore Le score final du joueur.
+     */
     public ScoreView(int seriesId, int finalScore) {
         this.seriesId = seriesId;
         this.finalScore = finalScore;
         initScoreView();
     }
 
+    /**
+     * Initialise l'interface utilisateur pour afficher le score final
+     * et le top 10 des scores.
+     */
     private void initScoreView() {
         setLayout(new BorderLayout());
         setBackground(normalColor);
diff --git a/src/main/mariadb.jar b/src/main/mariadb.jar
new file mode 100644
index 0000000..40028c4
Binary files /dev/null and b/src/main/mariadb.jar differ