diff --git a/applicationQT2048/Main.qml b/applicationQT2048/Main.qml
index 8cf786c7ac8ec9dbb9d7f86c2f86cfe1ac78390c..7b57da9b5b824f9659074a1f012df933eaf8b1a2 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 f58a0d569d5401545b32f5409473b0094c8d6602..9d5a638dfcd0b5611d36aa430dac65909f2f58b1 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 d0dbbdc0c9edb82829412cbc68749febb1962c4b..f38899b5acbb1ff9559d8b2bcd8839e9c3b07c79 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();
 
 
 };