diff --git a/applicationQT2048/gamemanager.cpp b/applicationQT2048/gamemanager.cpp
index 317947f729203f693c9d8dfa82718fd647ec3963..350c0a3aca0677cad061e7ad311218bb927a4214 100644
--- a/applicationQT2048/gamemanager.cpp
+++ b/applicationQT2048/gamemanager.cpp
@@ -344,6 +344,41 @@ void GameManager::undo() {
         emit calculscore();
     }
 }
+void GameManager::enregistrerMeilleurScore() {
+    QFile file("meilleurScore.json");
+    qDebug() << "Fichier JSON pour le meilleur score enregistré à : " << QFileInfo(file).absoluteFilePath();
+
+    if (!file.open(QIODevice::ReadWrite)) {
+        qWarning() << "Impossible d'ouvrir le fichier pour écriture :" << file.errorString();
+        return;
+    }
+
+    QJsonDocument doc;
+    if (file.size() > 0) {  // Vérifier si le fichier n'est pas vide
+        doc = QJsonDocument::fromJson(file.readAll());
+    } else {  // Si le fichier est vide, initialiser un objet vide
+        doc = QJsonDocument(QJsonObject());
+    }
+
+    QJsonObject rootObj = doc.object();  // Récupérer l'objet JSON racine
+
+    // Vérifier si le meilleur score est déjà enregistré, sinon l'initialiser
+    if (rootObj.contains("meilleurScore")) {
+        int meilleurScore = rootObj["meilleurScore"].toInt();
+        if (m_score > meilleurScore) {  // Si le score actuel est supérieur au meilleur score enregistré
+            rootObj["meilleurScore"] = m_score;  // Mettre à jour le meilleur score
+        }
+    } else {
+        rootObj["meilleurScore"] = m_score;  // Si aucune entrée "meilleurScore", on l'ajoute
+    }
+
+    // Réécriture du fichier avec la nouvelle version
+    file.resize(0);  // Effacer le contenu du fichier avant d'écrire la nouvelle version
+    file.write(QJsonDocument(rootObj).toJson());
+    file.close();
+
+    emit historiqueChanged();  // Notifie que l'historique a changé
+}
 
 void GameManager::enregistrerPartie(QString partieName){
     QFile file("historique.json");
@@ -447,5 +482,17 @@ bool GameManager::isGameOver() {
         }
     }
     return true;  // Si la grille est pleine et aucune fusion n'est possible, la partie est terminée
+    endGame();
 }
+<<<<<<< Updated upstream
 >>>>>>> e22daca7a3c09bd0a515d12093b0cbf7e3e4e152
+=======
+void GameManager::endGame() {
+    // Comparer le score actuel avec le meilleur score
+    if (m_score > m_bestScore) {
+        m_bestScore = m_score;  // Mettre à jour le meilleur score
+        enregistrerMeilleurScore();  // Enregistrer le meilleur score
+    }
+}
+
+>>>>>>> Stashed changes
diff --git a/applicationQT2048/gamemanager.h b/applicationQT2048/gamemanager.h
index e1fc8d20b2fed75e5fe458ab6575f0e38874ff43..475bf82e9671ca759c4c472bd1676ec0de3f4dba 100644
--- a/applicationQT2048/gamemanager.h
+++ b/applicationQT2048/gamemanager.h
@@ -37,13 +37,19 @@ private:
     std::vector<std::vector<int>> grid;
     QJsonArray historyArray;
     int m_score;
+    int m_bestScore;
+    int bestScore() const;
+
 
     Q_INVOKABLE void addRandomElement();
     Q_INVOKABLE void enregistrerPartie(QString partieName);
     Q_INVOKABLE void calculscore();
+    Q_INVOKABLE void enregistrerMeilleurScore();
+    Q_INVOKABLE void endGame();
 
     QJsonArray gridToJsonArray();
 
+
     bool m_gameOver;
 
 
@@ -52,6 +58,7 @@ signals:
     void gridChanged();
     void historiqueChanged();
     void scoreChanged();
+    void bestScoreChanged();
 
 
 };