Skip to content
Snippets Groups Projects
Commit bd706f19 authored by Breitwiller Josephine's avatar Breitwiller Josephine
Browse files

undo

parent cda7d44b
No related branches found
No related tags found
No related merge requests found
...@@ -40,6 +40,9 @@ void GameManager::moveLeft() { ...@@ -40,6 +40,9 @@ void GameManager::moveLeft() {
grid[i] = newRow; grid[i] = newRow;
} }
emit addRandomElement(); emit addRandomElement();
//Mettre a jour l'état et l'enregistrer
historyArray.append(gridToJsonArray());
emit gridChanged(); emit gridChanged();
} }
...@@ -78,6 +81,9 @@ void GameManager::moveRight() { ...@@ -78,6 +81,9 @@ void GameManager::moveRight() {
grid[i] = newRow; grid[i] = newRow;
} }
emit addRandomElement(); emit addRandomElement();
//Mettre a jour l'état et l'enregistrer
historyArray.append(gridToJsonArray());
emit gridChanged(); emit gridChanged();
} }
...@@ -123,6 +129,9 @@ void GameManager::moveUp() { ...@@ -123,6 +129,9 @@ void GameManager::moveUp() {
} }
emit addRandomElement(); emit addRandomElement();
//Mettre a jour l'état et l'enregistrer
historyArray.append(gridToJsonArray());
emit gridChanged(); emit gridChanged();
} }
...@@ -165,11 +174,23 @@ void GameManager::moveDown() { ...@@ -165,11 +174,23 @@ void GameManager::moveDown() {
} }
emit addRandomElement(); emit addRandomElement();
//Mettre a jour l'état et l'enregistrer
historyArray.append(gridToJsonArray());
emit gridChanged(); emit gridChanged();
} }
void GameManager::restartGame() { void GameManager::restartGame() {
//sauvergarder la partie précédente
enregistrerPartie();
// Réinitialisation des variables
grid.assign(4, std::vector<int>(4, 0)); grid.assign(4, std::vector<int>(4, 0));
historyArray = QJsonArray();
std::random_device rd; std::random_device rd;
std::uniform_int_distribution<int> distrib(0, 15); std::uniform_int_distribution<int> distrib(0, 15);
...@@ -191,6 +212,8 @@ void GameManager::restartGame() { ...@@ -191,6 +212,8 @@ void GameManager::restartGame() {
grid[rg2][col2]=2; grid[rg2][col2]=2;
//Mettre a jour l'état et l'enregistrer
historyArray.append(gridToJsonArray());
emit gridChanged(); emit gridChanged();
} }
...@@ -229,3 +252,35 @@ QVector<int> GameManager::getGridValues() const { ...@@ -229,3 +252,35 @@ QVector<int> GameManager::getGridValues() const {
} }
return flattenedGrid; return flattenedGrid;
} }
QJsonArray GameManager::gridToJsonArray() {
QJsonArray jsonGrid;
for (const auto &row : grid) {
QJsonArray jsonRow;
for (int cell : row) {
jsonRow.append(cell);
}
jsonGrid.append(jsonRow); // Ajoute chaque ligne
}
return jsonGrid;
}
void GameManager::undo() {
if (historyArray.size() > 1) { // Vérifiez qu'il y a au moins deux états
historyArray.removeLast(); // Supprimez le dernier état
QJsonArray previousState = historyArray.last().toArray(); // Récupérez l'avant-dernier état
// Mettez à jour la grille avec l'état précédent
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
grid[i][j] = previousState[i].toArray()[j].toInt();
}
}
emit gridChanged(); // Notifiez que la grille a changé
}
}
void GameManager::enregistrerPartie(){
}
...@@ -3,6 +3,12 @@ ...@@ -3,6 +3,12 @@
#include <QObject> #include <QObject>
#include <vector> #include <vector>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QFile>
class GameManager : public QObject class GameManager : public QObject
{ {
...@@ -17,12 +23,19 @@ public: ...@@ -17,12 +23,19 @@ public:
Q_INVOKABLE void moveUp(); Q_INVOKABLE void moveUp();
Q_INVOKABLE void moveDown(); Q_INVOKABLE void moveDown();
Q_INVOKABLE void restartGame(); Q_INVOKABLE void restartGame();
Q_INVOKABLE void undo();
QVector<int> getGridValues() const; QVector<int> getGridValues() const;
private: private:
std::vector<std::vector<int>> grid; std::vector<std::vector<int>> grid;
QJsonArray historyArray;
Q_INVOKABLE void addRandomElement(); Q_INVOKABLE void addRandomElement();
Q_INVOKABLE void enregistrerPartie();
QJsonArray gridToJsonArray();
signals: signals:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment