From dad5730c2c3b4f9aa0e4c45aaa600abbb59d2a61 Mon Sep 17 00:00:00 2001 From: jbreitwi <josephine.breitwiller@etu.ec-lyon.fr> Date: Thu, 20 Mar 2025 09:57:26 +0100 Subject: [PATCH] =?UTF-8?q?mise=20a=20jour=20de=20la=20grille=20li=C3=A9e?= =?UTF-8?q?=20=C3=A0=20grid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applicationQT2048/Main.qml | 27 ++++++++++++++------- applicationQT2048/gamemanager.cpp | 40 ++++++++++++++++++++++++------- applicationQT2048/gamemanager.h | 11 +++++++-- 3 files changed, 59 insertions(+), 19 deletions(-) diff --git a/applicationQT2048/Main.qml b/applicationQT2048/Main.qml index 8cf786c..7b57da9 100644 --- a/applicationQT2048/Main.qml +++ b/applicationQT2048/Main.qml @@ -112,8 +112,7 @@ Window { MouseArea{ id: buttonMouseArea - anchors.fill: parent //anchor all sides of the mouse area to the rectangle's anchors - //onClicked handles valid mouse button clicks + anchors.fill: parent onClicked: gameManager.restartGame() } } @@ -149,7 +148,7 @@ Window { anchors.horizontalCenter: parent.horizontalCenter y:170 color:"grey" - radius: 10 + radius: 5 Grid { @@ -162,16 +161,28 @@ Window { Repeater { - model: 16 + model: gameManager.gridValues Rectangle { width: 78 height: 78 - color: "lightgrey" - - radius:10 + color: modelData == 2 ? "#EEE4DA" : + modelData == 4 ? "#EDE0C8" : + modelData == 8 ? "#F2B179" : + modelData == 16 ? "#F59563" : + modelData == 32 ? "#F67C5F" : + modelData == 64 ? "#F65E3B" : + modelData == 128 ? "#EDCF72" : + modelData == 256 ? "#EDCC61" : + modelData == 512 ? "#EDC850" : + modelData == 1024 ? "#EDC53F" : + modelData == 2048 ? "#EDC22E" : "#BBADA0" + radius: 5 Text { + text: modelData > 0 ? modelData : "" anchors.centerIn: parent - text: "" + font.bold: true + font.pixelSize: 30 + color: "grey" } } } diff --git a/applicationQT2048/gamemanager.cpp b/applicationQT2048/gamemanager.cpp index f58a0d5..9d5a638 100644 --- a/applicationQT2048/gamemanager.cpp +++ b/applicationQT2048/gamemanager.cpp @@ -1,8 +1,8 @@ #include "gamemanager.h" +#include "random" GameManager::GameManager(QObject *parent) : QObject(parent), grid(4, std::vector<int>(4, 0)) { - generateTile(); - generateTile(); + } void GameManager::moveLeft() { @@ -23,14 +23,36 @@ void GameManager::moveDown() { void GameManager::restartGame() { grid.assign(4, std::vector<int>(4, 0)); - generateTile(); - generateTile(); -} + std::random_device rd; + std::uniform_int_distribution<int> distrib(0, 15); + + int num1 = distrib(rd); + int num2 = distrib(rd); + + // Assure que num2 est différent de num1 + do { + num2 = distrib(rd); + } while (num2 == num1); + + int rg1= num1/4; + int col1= num1 - (4*rg1); + + int rg2= num2/4; + int col2= num2 - (4*rg2); + + grid[rg1][col1]=2; + grid[rg2][col2]=2; + + emit gridChanged(); -void GameManager::generateTile() { - // Implémentation de la génération de tuiles } -void GameManager::mergeTiles() { - // Implémentation de la fusion des tuiles +QVector<int> GameManager::getGridValues() const { + QVector<int> flattenedGrid; + for (const auto& row : grid) { // 🔹 Parcourt chaque ligne + for (int value : row) { // 🔹 Parcourt chaque colonne + flattenedGrid.append(value); + } + } + return flattenedGrid; } diff --git a/applicationQT2048/gamemanager.h b/applicationQT2048/gamemanager.h index d0dbbdc..f38899b 100644 --- a/applicationQT2048/gamemanager.h +++ b/applicationQT2048/gamemanager.h @@ -7,6 +7,9 @@ class GameManager : public QObject { Q_OBJECT + + Q_PROPERTY(QVector<int> gridValues READ getGridValues NOTIFY gridChanged) + public: explicit GameManager(QObject *parent = nullptr); Q_INVOKABLE void moveLeft(); @@ -15,10 +18,14 @@ public: Q_INVOKABLE void moveDown(); Q_INVOKABLE void restartGame(); + QVector<int> getGridValues() const; + private: std::vector<std::vector<int>> grid; - void generateTile(); - void mergeTiles(); + + +signals: + void gridChanged(); }; -- GitLab