diff --git a/applicationQT2048/gamemanager.cpp b/applicationQT2048/gamemanager.cpp
index aef8b71f74ec3464fa266bd17157463937a054f2..cb790fca5e2fdfcc9af78348cff1b523e2d22d84 100644
--- a/applicationQT2048/gamemanager.cpp
+++ b/applicationQT2048/gamemanager.cpp
@@ -4,7 +4,7 @@
 #include <QDebug>
 
 GameManager::GameManager(QObject *parent) : QObject(parent), grid(4, std::vector<int>(4, 0)),m_score(0), m_gameOver(false) {
-
+    chercherBestScore();
 }
 
 void GameManager::moveLeft() {
@@ -338,7 +338,7 @@ void GameManager::undo() {
         }
 
         emit gridChanged();  // Notifiez que la grille a changé
-        emit calculscore();
+        calculscore();
     }
 }
 void GameManager::enregistrerMeilleurScore() {
@@ -363,18 +363,20 @@ void GameManager::enregistrerMeilleurScore() {
     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
+            rootObj["meilleurScore"] = m_score;
+            m_bestScore=m_score;
+            emit bestScoreChanged();// Mettre à jour le meilleur score
         }
     } else {
-        rootObj["meilleurScore"] = m_score;  // Si aucune entrée "meilleurScore", on l'ajoute
+        rootObj["meilleurScore"] = m_score;        // Si aucune entrée "meilleurScore", on l'ajoute
+        m_bestScore=m_score; // intialisation du meilleur score
+        emit bestScoreChanged(); // Mettre à jour le meilleur score
     }
 
     // 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){
@@ -441,10 +443,38 @@ void GameManager::chargerPartie(QString partieName){
     calculscore();
 }
 
-int GameManager::score() const {
+void GameManager::supprimerHistorique(){
+    QFile file("historique.json");
+    qDebug() << "Fichier JSON enregistré à : " << QFileInfo(file).absoluteFilePath();
+    // Ouvrir le fichier en mode lecture/écriture (si existant)
+    if (!file.open(QIODevice::ReadWrite)) {
+        qWarning() << "Impossible d'ouvrir le fichier pour écriture :" << file.errorString();
+        return;
+    }
+
+
+    QJsonDocument doc;
+    //  Ré-initialisation avec un objet vide
+    doc = QJsonDocument(QJsonObject());
+    QJsonObject rootObj = doc.object(); // Récupérer l'objet JSON racine
+
+
+    // 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();
+}
+
+int GameManager::getScore() {
     return m_score;  // Retourne le score actuel
 }
 
+int GameManager::getBestScore() {
+    return m_bestScore;  // Retourne le score actuel
+}
+
 
 
 void GameManager::calculscore(){
@@ -460,9 +490,43 @@ void GameManager::calculscore(){
         }
     }
     emit scoreChanged();
-    if (isGameOver()) {
-        endGame();  // Appeler endGame pour mettre à jour le meilleur score si nécessaire
+    enregistrerMeilleurScore();
+
+}
+
+void GameManager::chercherBestScore(){
+    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")) {
+        m_bestScore = rootObj["meilleurScore"].toInt();
+    } else {
+        rootObj["meilleurScore"] = 0;        // Si aucune entrée "meilleurScore", on l'ajoute
+        m_bestScore = 0; // intialisation du meilleur score
+    }
+
+
+    emit bestScoreChanged(); // affichage du meilleur score
+
+    // 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();
 }
 
 bool GameManager::isGameOver() {
@@ -479,7 +543,7 @@ bool GameManager::isGameOver() {
         }
     }
     return true;  // Si la grille est pleine et aucune fusion n'est possible, la partie est terminée
-    endGame();
+
 }
 
 void GameManager::endGame() {
@@ -491,7 +555,5 @@ void GameManager::endGame() {
     }
 
 }
-int GameManager::bestScore() const {
-    return m_bestScore;  // Retourne le meilleur score
-}
+
 
diff --git a/applicationQT2048/gamemanager.h b/applicationQT2048/gamemanager.h
index 475bf82e9671ca759c4c472bd1676ec0de3f4dba..7fe650a2ccb0c19a285234d377f53a184a5daa05 100644
--- a/applicationQT2048/gamemanager.h
+++ b/applicationQT2048/gamemanager.h
@@ -16,7 +16,8 @@ class GameManager : public QObject
 
     Q_PROPERTY(QVector<int> gridValues READ getGridValues NOTIFY gridChanged)
     Q_PROPERTY(QStringList partieHistorique READ getPartieHistorique NOTIFY historiqueChanged)
-    Q_PROPERTY(int score READ score NOTIFY scoreChanged)
+    Q_PROPERTY(int score READ getScore NOTIFY scoreChanged)
+    Q_PROPERTY(int bestScore READ getBestScore NOTIFY bestScoreChanged)
 
 public:
     explicit GameManager(QObject *parent = nullptr);
@@ -27,18 +28,18 @@ public:
     Q_INVOKABLE void restartGame(QString partieName);
     Q_INVOKABLE void undo();
     Q_INVOKABLE void chargerPartie(QString partieName);
+    Q_INVOKABLE void supprimerHistorique();
     bool isGameOver();
 
     QVector<int> getGridValues() const;
     QStringList getPartieHistorique();
-    int score() const;
+
 
 private:
     std::vector<std::vector<int>> grid;
     QJsonArray historyArray;
     int m_score;
     int m_bestScore;
-    int bestScore() const;
 
 
     Q_INVOKABLE void addRandomElement();
@@ -46,6 +47,9 @@ private:
     Q_INVOKABLE void calculscore();
     Q_INVOKABLE void enregistrerMeilleurScore();
     Q_INVOKABLE void endGame();
+    Q_INVOKABLE int getScore() ;
+    Q_INVOKABLE int getBestScore() ;
+    Q_INVOKABLE void chercherBestScore() ;
 
     QJsonArray gridToJsonArray();