diff --git a/AllScore.java b/AllScore.java
index 52374c5..b0d1af5 100644
--- a/AllScore.java
+++ b/AllScore.java
@@ -21,7 +21,7 @@ public class AllScore {
         "jdbc:mariadb://dwarves.iut-fbleau.fr/akagundu",
         "akagundu", "dersim62Lodek");
         try{
-          PreparedStatement pst = cnx.prepareStatement("SELECT score from score where id_serie=?;");
+          PreparedStatement pst = cnx.prepareStatement("SELECT Score from score where id_serie=?;");
           pst.setInt(1, idSerie); 
           ResultSet rs = pst.executeQuery();
           while(rs.next()) {
diff --git a/SendScore.java b/SendScore.java
index 8444015..e5deb18 100644
--- a/SendScore.java
+++ b/SendScore.java
@@ -1,9 +1,7 @@
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
-import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.ArrayList;
 
 public class SendScore {
     public void insertscore(int idSerie,int score) {        
@@ -18,7 +16,7 @@ public class SendScore {
         "jdbc:mariadb://dwarves.iut-fbleau.fr/akagundu",
         "akagundu", "dersim62Lodek");
         try{
-          PreparedStatement pst = cnx.prepareStatement("INSERT INTO score (id_serie, score) VALUES (?, ?);");
+          PreparedStatement pst = cnx.prepareStatement("INSERT INTO Score (id_serie, score) VALUES (?, ?);");
           pst.setInt(1, idSerie); 
           pst.setInt(2, score);
           pst.executeUpdate();
diff --git a/bin/controller/AllScore.class b/bin/controller/AllScore.class
new file mode 100644
index 0000000..0ec0af2
Binary files /dev/null and b/bin/controller/AllScore.class differ
diff --git a/bin/controller/GameController.class b/bin/controller/GameController.class
index e1fb7ae..1c15dd9 100644
Binary files a/bin/controller/GameController.class and b/bin/controller/GameController.class differ
diff --git a/bin/controller/GameEndListener.class b/bin/controller/GameEndListener.class
new file mode 100644
index 0000000..ff8be49
Binary files /dev/null and b/bin/controller/GameEndListener.class differ
diff --git a/bin/controller/MenuController.class b/bin/controller/MenuController.class
index faf78fb..aaea4ff 100644
Binary files a/bin/controller/MenuController.class and b/bin/controller/MenuController.class differ
diff --git a/bin/controller/ResListener.class b/bin/controller/ResListener.class
deleted file mode 100644
index aaa8657..0000000
Binary files a/bin/controller/ResListener.class and /dev/null differ
diff --git a/bin/controller/SendScore.class b/bin/controller/SendScore.class
new file mode 100644
index 0000000..a32bbec
Binary files /dev/null and b/bin/controller/SendScore.class differ
diff --git a/bin/main/Main.class b/bin/main/Main.class
index e9b291c..265d9fe 100644
Binary files a/bin/main/Main.class and b/bin/main/Main.class differ
diff --git a/bin/model/MenuModel.class b/bin/model/MenuModel.class
deleted file mode 100644
index d332e94..0000000
Binary files a/bin/model/MenuModel.class and /dev/null differ
diff --git a/bin/view/App.class b/bin/view/App.class
index 5cffaf4..c2a18a7 100644
Binary files a/bin/view/App.class and b/bin/view/App.class differ
diff --git a/bin/view/GameView.class b/bin/view/GameView.class
index ad40ca6..62c75e7 100644
Binary files a/bin/view/GameView.class and b/bin/view/GameView.class differ
diff --git a/bin/view/MenuView.class b/bin/view/MenuView.class
index 8fc0679..a276c8a 100644
Binary files a/bin/view/MenuView.class and b/bin/view/MenuView.class differ
diff --git a/bin/view/ScoreView$1.class b/bin/view/ScoreView$1.class
new file mode 100644
index 0000000..4dd3614
Binary files /dev/null and b/bin/view/ScoreView$1.class differ
diff --git a/bin/view/ScoreView.class b/bin/view/ScoreView.class
new file mode 100644
index 0000000..1a28735
Binary files /dev/null and b/bin/view/ScoreView.class differ
diff --git a/src/main/Main.java b/src/main/Main.java
index af0d52f..61e9218 100644
--- a/src/main/Main.java
+++ b/src/main/Main.java
@@ -1,8 +1,4 @@
 package main;
-
-import model.MenuModel;
-import controller.MenuController;
-import controller.SeriesSelector;
 import view.*;
 
 import javax.sound.sampled.AudioInputStream;
@@ -14,21 +10,9 @@ import java.net.URL;
 public class Main {
     public static void main(String[] args) {
         SwingUtilities.invokeLater(() -> {
-            MenuModel model = new MenuModel();
-            MenuView view = new MenuView();
-
-            // Initialiser SeriesSelector et le passer à MenuView
-            SeriesSelector seriesSelector = new SeriesSelector();
-            view.setSeriesSelector(seriesSelector);
-
-            // Créer MenuController avec model, view et seriesSelector
-            new MenuController(model, view, seriesSelector);
-
-            JFrame frame = App.getInstance();
-            frame.add(view);
-            frame.setVisible(true);
-
-            PlayMusic("/Music/audio.wav");
+            MenuView menuView = new MenuView();
+            App.addView(menuView, App.MENU_VIEW);
+            App.showView(App.MENU_VIEW);
         });
     }
 
diff --git a/src/main/java/controller/AllScore.java b/src/main/java/controller/AllScore.java
new file mode 100644
index 0000000..fe90e0a
--- /dev/null
+++ b/src/main/java/controller/AllScore.java
@@ -0,0 +1,39 @@
+package controller;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+
+public class AllScore {
+    public static ArrayList<Integer> getScoresForSeries(int idSerie) {
+        ArrayList<Integer> scores = new ArrayList<>();
+
+        try {
+            Class.forName("org.mariadb.jdbc.Driver");
+        } catch (ClassNotFoundException e) {
+            System.err.println("Erreur : pilote JDBC non trouvé");
+            System.exit(1);
+        }
+
+        try (Connection cnx = DriverManager.getConnection(
+                "jdbc:mariadb://dwarves.iut-fbleau.fr/akagundu",
+                "akagundu", "dersim62Lodek")) {
+            try (PreparedStatement pst = cnx.prepareStatement("SELECT score FROM Score WHERE id_serie=? ORDER BY score DESC LIMIT 10")) {
+                pst.setInt(1, idSerie);
+                try (ResultSet rs = pst.executeQuery()) {
+                    while (rs.next()) {
+                        scores.add(rs.getInt("score"));
+                    }
+                }
+            }
+        } catch (SQLException e) {
+            System.err.println("Erreur de connexion ou d'exécution de la requête SQL");
+            e.printStackTrace();
+        }
+
+        return scores;
+    }
+}
diff --git a/src/main/java/controller/GameController.java b/src/main/java/controller/GameController.java
index 58b7fe6..fb35432 100644
--- a/src/main/java/controller/GameController.java
+++ b/src/main/java/controller/GameController.java
@@ -1,3 +1,4 @@
+// src/main/java/controller/GameController.java
 package controller;
 
 import model.Tile;
@@ -20,22 +21,25 @@ public class GameController implements TilePlacer {
     private TileDatabaseManager dbManager;
     private List<Tile> currentTiles;
     private int tileIndex;
-    private ScoreGameContext scoreGameContext;  // Nouveau contexte pour le score
+    private ScoreGameContext scoreGameContext;
 
-    public GameController(GameContext gameContext, JPanel gridPanel, HexagonTile nextTilePreview, JLabel scoreLabel) {
+    private int placedTileCount = 0;
+    private int seriesId;
+    private GameEndListener gameEndListener;
+
+    public GameController(GameContext gameContext, JPanel gridPanel, HexagonTile nextTilePreview, JLabel scoreLabel, int seriesId, GameEndListener gameEndListener) {
+        this.seriesId = seriesId;
         this.gameContext = gameContext;
         this.gridPanel = gridPanel;
         this.hexagonMap = gameContext.getHexagonMap();
         this.availablePositions = gameContext.getAvailablePositions();
         this.nextTilePreview = nextTilePreview;
-
         this.dbManager = new TileDatabaseManager();
         this.tileIndex = 0;
-
-        // Initialisation de ScoreGameContext
         this.scoreGameContext = new ScoreGameContext(gameContext, scoreLabel);
+        this.gameEndListener = gameEndListener;
 
-        loadSeries(1); // Charger la série par défaut (ex. série 1)
+        loadSeries(seriesId);
         updatePreview();
     }
 
@@ -54,16 +58,12 @@ public class GameController implements TilePlacer {
                 return;
             }
 
-            System.out.println("Placement de la tuile avec ID : " + (nextTile != null ? nextTile.getId() : "null") + " à la position : " + position);
-
-            hexTile.setTile(nextTile);  // Place la tuile actuelle
+            hexTile.setTile(nextTile);
             gridPanel.revalidate();
             gridPanel.repaint();
-
             availablePositions.remove(position);
 
-            Point[] adjacentPositions = getAdjacentPositions(position);
-            for (Point adj : adjacentPositions) {
+            for (Point adj : getAdjacentPositions(position)) {
                 if (!hexagonMap.containsKey(adj)) {
                     availablePositions.add(adj);
                     addHexagonTile(adj, gridPanel, 50, null, null);
@@ -71,38 +71,43 @@ public class GameController implements TilePlacer {
             }
 
             gameContext.repaintGrid(gridPanel);
-            generateNextTile();  // Génère la tuile suivante
-
-            // Calcul et mise à jour du score
+            generateNextTile();
             scoreGameContext.calculateScore();
+
+            placedTileCount++;
+            if (placedTileCount >= 50) {
+                endGame(); // Appeler endGame pour terminer la partie
+            }
+        }
+    }
+
+    private void endGame() {
+        int finalScore = scoreGameContext.getScore();
+
+        // Enregistrer le score dans la base de données
+        new SendScore().insertscore(seriesId, finalScore);
+
+        // Notifiez le listener de la fin de la partie
+        if (gameEndListener != null) {
+            gameEndListener.onGameEnd(finalScore);
         }
     }
 
     public void initializeGame(CameraController cameraController) {
-        generateNextTile();  // Génère la première tuile et assigne une tuile valide à `nextTile`
-    
-        Tile initialTile = getNextTile();  // Récupère la tuile générée
+        generateNextTile();
+        Tile initialTile = getNextTile();
         if (initialTile == null) {
             System.out.println("Erreur : aucune tuile initiale générée.");
-            return;  // Arrête l'initialisation si aucune tuile n'a été générée
+            return;
         }
-    
-        System.out.println("ID de la tuile initiale générée : " + initialTile.getId());  // Affiche l'ID de la tuile initiale
-    
+
         int centerX = gridPanel.getPreferredSize().width / 2;
         int centerY = gridPanel.getPreferredSize().height / 2;
-    
-        Point initialPosition = new Point(0, 0);
-        initialPosition.setLocation(centerX / 50, centerY / 50);  // Calcule la position centrale
-    
-        placeInitialTile(initialPosition, cameraController, initialTile);  // Place la première tuile
-    
-        // Calculer et mettre à jour le score incluant la première tuile
+        Point initialPosition = new Point(centerX / 50, centerY / 50);
+        placeInitialTile(initialPosition, cameraController, initialTile);
         scoreGameContext.calculateScore();
-    
-        generateNextTile();  // Génère la tuile suivante
+        generateNextTile();
     }
-    
 
     public void placeInitialTile(Point position, CameraController cameraController, Tile tile) {
         if (tile == null) {
@@ -110,16 +115,13 @@ public class GameController implements TilePlacer {
             return;
         }
 
-        System.out.println("Placement de la tuile initiale avec ID : " + tile.getId() + " à la position : " + position);
+        addHexagonTile(position, gridPanel, 50, cameraController, tile);
+        availablePositions.remove(position);
 
-        addHexagonTile(position, gridPanel, 50, cameraController, tile);  // Place la première tuile
-        availablePositions.remove(position);  // Marque la position comme occupée
-
-        Point[] adjacentPositions = getAdjacentPositions(position);
-        for (Point adj : adjacentPositions) {
+        for (Point adj : getAdjacentPositions(position)) {
             if (!hexagonMap.containsKey(adj)) {
                 availablePositions.add(adj);
-                addHexagonTile(adj, gridPanel, 50, cameraController, null);  // Placeholder vide pour les positions adjacentes
+                addHexagonTile(adj, gridPanel, 50, cameraController, null);
             }
         }
     }
@@ -143,18 +145,15 @@ public class GameController implements TilePlacer {
             yOffset += (int) (Math.sqrt(3) * hexSize / 2);
         }
 
-        boolean isPlaceholder = (tile == null);  // Si tile est null, c'est un placeholder
+        boolean isPlaceholder = (tile == null);
         HexagonTile hexTile = new HexagonTile(position, isPlaceholder);
 
         if (tile != null) {
             hexTile.setTile(tile);
-        } else {
-            System.out.println("Aucun tile n'a été fourni pour cette position : " + position);
         }
 
         hexTile.setBounds(xOffset, yOffset, hexSize, hexSize);
         hexTile.addMouseListener(new HexagonMouseListener(hexTile, this, availablePositions));
-
         hexagonMap.put(position, hexTile);
         panel.add(hexTile);
         panel.revalidate();
@@ -164,21 +163,19 @@ public class GameController implements TilePlacer {
     public void generateNextTile() {
         if (tileIndex < currentTiles.size()) {
             nextTile = currentTiles.get(tileIndex++);
-            System.out.println("Génération de la prochaine tuile avec ID : " + nextTile.getId() + " (index " + tileIndex + ")");
-            updatePreview();  // Met à jour l'aperçu de la tuile suivante
+            updatePreview();
         } else {
-            nextTile = null;  // Fin de la série, plus de tuiles à placer
-            updatePreview();  // Met à jour l'aperçu pour refléter l'absence de prochaine tuile
-            System.out.println("Fin de la série. Plus de tuiles à placer.");
+            nextTile = null;
+            updatePreview();
         }
     }
 
     private void updatePreview() {
         if (nextTilePreview != null) {
             if (nextTile != null) {
-                nextTilePreview.setTile(nextTile);  // Met à jour avec une tuile valide
+                nextTilePreview.setTile(nextTile);
             } else {
-                nextTilePreview.setTile(null);  // Affiche un placeholder ou un message si `nextTile` est null
+                nextTilePreview.setTile(null);
             }
             nextTilePreview.repaint();
         }
diff --git a/src/main/java/controller/GameEndListener.java b/src/main/java/controller/GameEndListener.java
new file mode 100644
index 0000000..2db52b7
--- /dev/null
+++ b/src/main/java/controller/GameEndListener.java
@@ -0,0 +1,5 @@
+package controller;
+
+public interface GameEndListener {
+    void onGameEnd(int finalScore);
+}
\ No newline at end of file
diff --git a/src/main/java/controller/MenuController.java b/src/main/java/controller/MenuController.java
deleted file mode 100644
index 998827d..0000000
--- a/src/main/java/controller/MenuController.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package controller;
-
-import model.MenuModel;
-import view.MenuView;
-
-public class MenuController {
-
-    public MenuController(MenuModel model, MenuView view, SeriesSelector seriesSelector) {
-        // Assignation des action listeners aux boutons du menu
-        view.getQuiButton().addActionListener(new QuiListener());                 // Quitte l'application
-
-        // Définir le sélecteur de séries
-        view.setSeriesSelector(seriesSelector);
-    }
-}
diff --git a/src/main/java/controller/SendScore.java b/src/main/java/controller/SendScore.java
new file mode 100644
index 0000000..7671b54
--- /dev/null
+++ b/src/main/java/controller/SendScore.java
@@ -0,0 +1,30 @@
+package controller;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public class SendScore {
+    public void insertscore(int idSerie, int score) {
+        try {
+            Class.forName("org.mariadb.jdbc.Driver");
+        } catch (ClassNotFoundException e) {
+            System.err.println("Erreur : pilote JDBC non trouvé");
+            System.exit(1);
+        }
+
+        try (Connection cnx = DriverManager.getConnection(
+                "jdbc:mariadb://dwarves.iut-fbleau.fr/akagundu",
+                "akagundu", "dersim62Lodek")) {
+            try (PreparedStatement pst = cnx.prepareStatement("INSERT INTO Score (id_serie, score) VALUES (?, ?);")) {
+                pst.setInt(1, idSerie);
+                pst.setInt(2, score);
+                pst.executeUpdate();
+            }
+        } catch (SQLException e) {
+            System.err.println("Erreur de connexion ou d'exécution de la requête SQL");
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/src/main/java/model/MenuModel.java b/src/main/java/model/MenuModel.java
deleted file mode 100644
index b0f6aa4..0000000
--- a/src/main/java/model/MenuModel.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package model;
-
-
-public class MenuModel {
-
-    public MenuModel() {
-    // rien du tout pour l'instant
-    }
-
-}
diff --git a/src/main/java/view/App.java b/src/main/java/view/App.java
index 666efb2..32b14f2 100644
--- a/src/main/java/view/App.java
+++ b/src/main/java/view/App.java
@@ -1,17 +1,37 @@
 package view;
 
 import javax.swing.*;
+import java.awt.*;
 
 public class App {
+    public static final String MENU_VIEW = "MenuView";
+    public static final String GAME_VIEW = "GameView";
+    public static final String SCORE_VIEW = "ScoreView";
+
     private static JFrame frame;
+    private static CardLayout cardLayout;
+    private static JPanel mainPanel;
+
+    static {
+        frame = new JFrame("Application de Jeu");
+        cardLayout = new CardLayout();
+        mainPanel = new JPanel(cardLayout);
+        frame.setContentPane(mainPanel);
+        frame.setSize(1500, 750);
+        frame.setLocationRelativeTo(null);
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+    }
 
     public static JFrame getInstance() {
-        if (frame == null) {
-            frame = new JFrame("Menu");
-            frame.setSize(1500, 750);
-            frame.setLocationRelativeTo(null);
-            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        }
         return frame;
     }
-}
+
+    public static void addView(JPanel view, String viewName) {
+        mainPanel.add(view, viewName);
+    }
+
+    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/GameView.java b/src/main/java/view/GameView.java
index dea6cc1..fadd2a9 100644
--- a/src/main/java/view/GameView.java
+++ b/src/main/java/view/GameView.java
@@ -1,31 +1,23 @@
+// src/main/java/view/GameView.java
 package view;
 
-import controller.GameController;
-import controller.CameraController;
-import controller.GameContext;
-import controller.MouseWheelController;
+import controller.*;
 
 import javax.swing.*;
 import java.awt.*;
 
-public class GameView extends JFrame {
+public class GameView extends JPanel implements GameEndListener {
     private JPanel gridPanel;
     private HexagonTile nextTilePreview;
     private GameController gameController;
     private CameraController cameraController;
     private GameContext gameContext;
     private JLabel scoreLabel;
-
-    // Couleurs pour le style
-    private final Color hoverColor = new Color(200, 150, 100); // Couleur de hover avec transparence
-    private final Color normalColor = new Color(243, 171, 115); // Couleur normale avec transparence
+    private int seriesId;
 
     public GameView(int seriesId) {
-        setTitle("Jeu de Tuiles");
-        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        this.seriesId = seriesId;
         setLayout(new BorderLayout());
-        setSize(1500, 750); 
-        setLocationRelativeTo(null);
 
         gameContext = new GameContext();
         gridPanel = createHexagonGrid();
@@ -34,27 +26,39 @@ public class GameView extends JFrame {
 
         nextTilePreview = new HexagonTile(null, false);
         scoreLabel = new JLabel("Score: 0");
-        scoreLabel.setForeground(Color.BLACK); // Texte noir pour contraste
+        scoreLabel.setForeground(Color.BLACK);
 
         JPanel controlPanel = createControlPanel();
-        controlPanel.setPreferredSize(new Dimension(200, 600));
+        controlPanel.setPreferredSize(new Dimension(200, getPreferredSize().height));
         add(controlPanel, BorderLayout.EAST);
 
-        gameController = new GameController(gameContext, gridPanel, nextTilePreview, scoreLabel);
-        gameController.loadSeries(seriesId); // Charge la série
+        gameController = new GameController(gameContext, gridPanel, nextTilePreview, scoreLabel, seriesId, this);
+        gameController.loadSeries(seriesId);
         cameraController = new CameraController(gridPanel, gameContext);
 
         MouseWheelController wheelController = new MouseWheelController(nextTilePreview, gameController);
         addMouseWheelListener(wheelController);
 
         gameController.initializeGame(cameraController);
-        setVisible(true);
+
+        JButton backButton = new JButton("Retour");
+        backButton.setPreferredSize(new Dimension(100, 40));
+        backButton.setBackground(new Color(202, 146, 104));
+        backButton.setForeground(Color.BLACK);
+        backButton.setFocusPainted(false);
+        backButton.setBorderPainted(false);
+
+        backButton.addActionListener(e -> {
+            App.showView(App.MENU_VIEW);
+        });
+
+        controlPanel.add(backButton);
     }
 
     private JPanel createHexagonGrid() {
         JPanel panel = new JPanel();
         panel.setLayout(null);
-        panel.setBackground(normalColor); // Couleur de fond de la grille
+        panel.setBackground(new Color(243, 171, 115));
         panel.setPreferredSize(new Dimension(800, 800));
         return panel;
     }
@@ -69,16 +73,16 @@ public class GameView extends JFrame {
     private JPanel createControlPanel() {
         JPanel panel = new JPanel();
         panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
-        panel.setBackground(normalColor); // Couleur normale pour le panneau de contrôle
+        panel.setBackground(new Color(243, 171, 115));
         panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
 
         JLabel nextTileLabel = new JLabel("Prochaine tuile : ");
-        nextTileLabel.setForeground(Color.BLACK); // Texte noir pour contraste
+        nextTileLabel.setForeground(Color.BLACK);
         panel.add(nextTileLabel);
         panel.add(Box.createRigidArea(new Dimension(0, 10)));
 
         nextTilePreview.setPreferredSize(new Dimension(150, 150));
-        nextTilePreview.setBackground(hoverColor); // Couleur hover pour différencier
+        nextTilePreview.setBackground(new Color(200, 150, 100));
         nextTilePreview.setOpaque(true);
         panel.add(nextTilePreview);
 
@@ -87,4 +91,13 @@ public class GameView extends JFrame {
 
         return panel;
     }
+
+    @Override
+    public void onGameEnd(int finalScore) {
+        SwingUtilities.invokeLater(() -> {
+            ScoreView scoreView = new ScoreView(seriesId, finalScore);
+            App.addView(scoreView, App.SCORE_VIEW);
+            App.showView(App.SCORE_VIEW);
+        });
+    }
 }
diff --git a/src/main/java/view/MenuView.java b/src/main/java/view/MenuView.java
index c91e3fe..7e2170e 100644
--- a/src/main/java/view/MenuView.java
+++ b/src/main/java/view/MenuView.java
@@ -1,10 +1,11 @@
 package view;
 
+import controller.SeriesSelector;
+
 import javax.swing.*;
 import java.awt.*;
-import controller.SeriesSelector;
 
-public class MenuView extends JComponent {
+public class MenuView extends JPanel {
 
     private BtnPerso resumeButton;
     private BtnPerso newGameButton;
@@ -18,7 +19,7 @@ public class MenuView extends JComponent {
     private Image backgroundImage;
     private ImageIcon logo;
     private ImageIcon quit;
-    private JLabel labelImg; // Déclaration de labelImg
+    private JLabel labelImg;
 
     public MenuView() {
         initMenu();
@@ -51,68 +52,56 @@ public class MenuView extends JComponent {
     }
 
     private void initMenu() {
-        // Initialisation du panneau latéral
         panelCote = new JPanel(new GridBagLayout());
         GridBagConstraints gbc = new GridBagConstraints();
         panelCote.setBackground(new Color(243, 171, 115, 150));
         panelCote.setPreferredSize(new Dimension(300, 0));
 
-        // Charger les images
         backgroundImage = new ImageIcon(getClass().getResource("/java/view/img/bg.png")).getImage();
         logo = new ImageIcon(getClass().getResource("/java/view/img/D.png"));
         quit = new ImageIcon(getClass().getResource("/java/view/img/quit.png"));
         
-        // Redimensionnement des images
         Image quit1 = quit.getImage();
         Image lg = logo.getImage();
         Image resizedlg = lg.getScaledInstance(300, 300, Image.SCALE_SMOOTH);
-        labelImg = new JLabel(new ImageIcon(resizedlg)); // Initialisation de labelImg
+        labelImg = new JLabel(new ImageIcon(resizedlg));
 
-        // Configuration du bouton "Quitter" avec une icône redimensionnée
         int buttonWidth = 65;
         int buttonHeight = 40;
         Image resizedImage = quit1.getScaledInstance(buttonWidth, buttonHeight, Image.SCALE_SMOOTH);
         ImageIcon resizedIcon = new ImageIcon(resizedImage);
 
-        // Boutons
         resumeButton = new BtnPerso("JOUER");
         newGameButton = new BtnPerso("COMMENT JOUER");
         quitButton = new JButton(resizedIcon);
 
-        // Configurer le bouton "Quitter" pour enlever le fond et la bordure
         quitButton.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
-        quitButton.setBackground(new Color(243, 171, 115, 150)); // Fond transparent similaire
-        quitButton.setBorderPainted(false); // Enlever la bordure pour un look plus propre
-        quitButton.setOpaque(true); // Rendre le fond visible
-        quitButton.setFocusPainted(false); // Enlever le focus autour du bouton
+        quitButton.setBackground(new Color(243, 171, 115, 150));
+        quitButton.setBorderPainted(false);
+        quitButton.setOpaque(true);
+        quitButton.setFocusPainted(false);
 
-        // Ajout des listeners pour les boutons
         resumeButton.addActionListener(e -> showSeriesButtons());
         newGameButton.addActionListener(e -> toggleHowToPlay());
 
-        // Créer le panneau "Comment jouer" et le panneau de séries
         howToPlayPanel = createHowToPlayPanel();
         howToPlayPanel.setVisible(false);
 
         seriesPanel = createSeriesPanel();
         seriesPanel.setVisible(false);
 
-        // Panneau centré pour le contenu dynamique
         centeredPanel = new JPanel(new GridBagLayout());
         centeredPanel.setOpaque(false);
         centeredPanel.add(howToPlayPanel);
 
-        // Ajout des composants au panneau latéral
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets(10, 10, 10, 10);
         gbc.weightx = 1.0;
         gbc.gridx = 0;
 
-        // Ajouter l'image de logo
         gbc.gridy = 0;
-        panelCote.add(labelImg, gbc); // Ajout de labelImg ici
+        panelCote.add(labelImg, gbc);
 
-        // Ajouter les boutons
         gbc.gridy = 1;
         panelCote.add(resumeButton, gbc);
 
@@ -164,6 +153,9 @@ public class MenuView extends JComponent {
             int seriesId = i;
             BtnPerso seriesButton = new BtnPerso("Série " + seriesId);
             seriesButton.addActionListener(e -> {
+                GameView gameView = new GameView(seriesId);
+                App.addView(gameView, App.GAME_VIEW);
+                App.showView(App.GAME_VIEW);
                 if (seriesSelector != null) {
                     seriesSelector.startGameWithSeries(seriesId);
                 }
@@ -180,16 +172,4 @@ public class MenuView extends JComponent {
         super.paintComponent(g);
         g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);
     }
-
-    public BtnPerso getResumeButton() {
-        return resumeButton;
-    }
-
-    public BtnPerso getNewGameButton() {
-        return newGameButton;
-    }
-
-    public JButton getQuiButton() {
-        return quitButton;
-    }
-}
+}
\ No newline at end of file
diff --git a/src/main/java/view/ScoreView.java b/src/main/java/view/ScoreView.java
new file mode 100644
index 0000000..471db06
--- /dev/null
+++ b/src/main/java/view/ScoreView.java
@@ -0,0 +1,90 @@
+// src/main/java/view/ScoreView.java
+package view;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import controller.AllScore;
+
+public class ScoreView extends JPanel {
+    private int seriesId;
+    private int finalScore;
+    private final Color hoverColor = new Color(200, 150, 100,150);
+    private final Color normalColor = new Color(243, 171, 115, 150); // Couleur avec transparence
+
+    public ScoreView(int seriesId, int finalScore) {
+        this.seriesId = seriesId;
+        this.finalScore = finalScore;
+        initScoreView();
+    }
+
+    private void initScoreView() {
+        setLayout(new BorderLayout());
+        setBackground(normalColor);
+
+        // Titre de la vue de score
+        JLabel title = new JLabel("Fin de la Partie", JLabel.CENTER);
+        title.setFont(new Font("Helvetica", Font.BOLD, 30));
+        add(title, BorderLayout.NORTH);
+
+        // Affichage du score actuel de la partie
+        JLabel scoreLabel = new JLabel("Votre Score : " + finalScore, JLabel.CENTER);
+        scoreLabel.setFont(new Font("Helvetica", Font.PLAIN, 20));
+        add(scoreLabel, BorderLayout.CENTER);
+
+        // Panneau des scores du top 10
+        JPanel topScoresPanel = new JPanel();
+        topScoresPanel.setLayout(new BoxLayout(topScoresPanel, BoxLayout.Y_AXIS));
+        topScoresPanel.setBorder(BorderFactory.createTitledBorder("Top 10 des Scores"));
+        topScoresPanel.setBackground(normalColor);
+
+        ArrayList<Integer> scores = AllScore.getScoresForSeries(seriesId);
+        Collections.sort(scores, Collections.reverseOrder());
+        scores = new ArrayList<>(scores.subList(0, Math.min(10, scores.size())));
+
+        for (Integer score : scores) {
+            JLabel scoreItem = new JLabel(score.toString(), JLabel.CENTER);
+            scoreItem.setFont(new Font("Helvetica", Font.PLAIN, 18));
+            scoreItem.setAlignmentX(Component.CENTER_ALIGNMENT);
+
+            // Marquer le score final en couleur spéciale
+            if (score == finalScore) {
+                scoreItem.setForeground(new Color(128, 0, 128)); // Violet pour le score actuel
+            } else {
+                scoreItem.setForeground(Color.BLACK);
+            }
+
+            topScoresPanel.add(scoreItem);
+        }
+
+        add(topScoresPanel, BorderLayout.CENTER);
+
+        // Bouton de retour au menu
+        BtnPerso backButton = new BtnPerso("Retour au Menu");
+        backButton.addActionListener(e -> App.showView(App.MENU_VIEW));
+        backButton.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseEntered(java.awt.event.MouseEvent evt) {
+                backButton.setBackground(hoverColor);
+            }
+
+            public void mouseExited(java.awt.event.MouseEvent evt) {
+                backButton.setBackground(normalColor);
+            }
+        });
+
+        // Panneau de score actuel
+        JPanel currentScorePanel = new JPanel();
+        currentScorePanel.setBackground(normalColor);
+        JLabel currentScoreLabel = new JLabel("Score Actuel : " + finalScore);
+        currentScoreLabel.setFont(new Font("Helvetica", Font.BOLD, 22));
+        currentScorePanel.add(currentScoreLabel);
+
+        // Ajouter le panneau de score actuel et le bouton de retour
+        JPanel southPanel = new JPanel(new BorderLayout());
+        southPanel.add(currentScorePanel, BorderLayout.NORTH);
+        southPanel.add(backButton, BorderLayout.SOUTH);
+
+        add(southPanel, BorderLayout.SOUTH);
+    }
+}