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(); };