Skip to content
Snippets Groups Projects
Commit bdd11a35 authored by Breitwiller Josephine's avatar Breitwiller Josephine
Browse files
parents c392be23 a9cb3ad3
No related branches found
No related tags found
No related merge requests found
......@@ -88,7 +88,7 @@ FocusScope { // Permet de capter le focus pour les raccourcis clavier
Text{
id: bestScore
text:"0"
text:gameManager.bestScore
color:"white"
font.bold: true
font.pixelSize: 25
......
......@@ -206,8 +206,8 @@ void GameManager::restartGame(QString partieName) {
//demander pour sauvergarder la partie précédente
if(partieName=="false"){}else{
if(partieName=="false"){
}else{
enregistrerPartie(partieName);
};
m_gameOver = false;
......@@ -341,6 +341,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");
......@@ -425,6 +460,9 @@ void GameManager::calculscore(){
}
}
emit scoreChanged();
if (isGameOver()) {
endGame(); // Appeler endGame pour mettre à jour le meilleur score si nécessaire
}
}
bool GameManager::isGameOver() {
......@@ -441,4 +479,19 @@ 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() {
// 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
emit bestScoreChanged();
}
}
int GameManager::bestScore() const {
return m_bestScore; // Retourne le meilleur score
}
......@@ -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();
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment