From 3f5587527d88be41a74a6f7258e5949bcc0afe88 Mon Sep 17 00:00:00 2001
From: Jamal <fredrick2.enoime@live.uwe.ac.uk>
Date: Sat, 26 Apr 2025 10:51:09 +0100
Subject: [PATCH] Almost finished

---
 2048              | Bin 38648 -> 39232 bytes
 include/2048.hpp  |   8 +++---
 include/Extra.hpp |  21 +++++++++++++++
 include/UI.hpp    |   4 ++-
 src/2048.cpp      |  29 +++++++++++++-------
 src/2048.o        | Bin 52280 -> 52736 bytes
 src/Extra.cpp     |  41 ++++++++++++++++++++++++++++
 src/Extra.o       | Bin 1984 -> 4408 bytes
 src/UI.cpp        |  67 +++++++++++++++++++++++++++++++++++++++++++---
 src/UI.o          | Bin 3088 -> 5360 bytes
 src/main.cpp      |   6 +++--
 src/main.o        | Bin 2376 -> 2264 bytes
 12 files changed, 156 insertions(+), 20 deletions(-)

diff --git a/2048 b/2048
index 9282b48a78ef1c2e12b4549b31ee62da69605d49..c7c546fcb6a8996c9f964d9987173c168731fa75 100755
GIT binary patch
delta 14904
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
G{c-?B<!!qF

delta 12119
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
VVu-{A$;ppqm@%E`oh&s|4FD@vZ=?VK

diff --git a/include/2048.hpp b/include/2048.hpp
index 7ae5bbc..a3b667a 100644
--- a/include/2048.hpp
+++ b/include/2048.hpp
@@ -10,20 +10,22 @@ class Game2048 {
 private:
     Tile board[SIZE][SIZE];
     bool moved;
+    int score;
 
     void spawnTile();
-    void resetBoard();
+    void addToScore(int value);
 
 public:
     Game2048();
+    void resetBoard(); // Made public for restart functionality
     void drawBoard();
     void moveLeft();
     void moveRight();
     void moveUp();
     void moveDown();
     bool canMove();
-    int getScore();
-    const Tile (*getBoard() const)[SIZE]; // Return Tile array instead of int array
+    int getScore() const;
+    const Tile (*getBoard() const)[SIZE];
 };
 
 #endif
\ No newline at end of file
diff --git a/include/Extra.hpp b/include/Extra.hpp
index 539aa83..e380a77 100644
--- a/include/Extra.hpp
+++ b/include/Extra.hpp
@@ -5,5 +5,26 @@
 
 void initializeGame();
 void cleanupGame();
+void initColors(); // New function to initialize color pairs
+
+// Define color pair constants
+enum ColorPairs {
+    COLOR_PAIR_DEFAULT = 1,
+    COLOR_PAIR_2 = 2,
+    COLOR_PAIR_4 = 3,
+    COLOR_PAIR_8 = 4,
+    COLOR_PAIR_16 = 5,
+    COLOR_PAIR_32 = 6,
+    COLOR_PAIR_64 = 7,
+    COLOR_PAIR_128 = 8,
+    COLOR_PAIR_256 = 9,
+    COLOR_PAIR_512 = 10,
+    COLOR_PAIR_1024 = 11,
+    COLOR_PAIR_2048 = 12,
+    COLOR_PAIR_HIGHER = 13
+};
+
+// Function to get color pair based on tile value
+int getTileColorPair(int value);
 
 #endif
\ No newline at end of file
diff --git a/include/UI.hpp b/include/UI.hpp
index 36c9d78..1e52a83 100644
--- a/include/UI.hpp
+++ b/include/UI.hpp
@@ -8,7 +8,9 @@ class UI {
 public:
     void drawBoard(const Game2048& game);
     void handleInput(Game2048& game);
-    void showGameOver();
+    void showGameOver(Game2048& game); // Modified to allow restart
+    void displayScore(const Game2048& game);
+    void displayInstructions(); // New method to show game instructions
 };
 
 #endif
\ No newline at end of file
diff --git a/src/2048.cpp b/src/2048.cpp
index 6e64e22..dd59286 100644
--- a/src/2048.cpp
+++ b/src/2048.cpp
@@ -4,12 +4,13 @@
 #include <ctime>
 #include <vector>
 
-Game2048::Game2048() {
+Game2048::Game2048() : score(0) {
     std::srand(std::time(0));
     resetBoard();
 }
 
 void Game2048::resetBoard() {
+    score = 0;
     for (int i = 0; i < SIZE; ++i)
         for (int j = 0; j < SIZE; ++j)
             board[i][j].setValue(0);
@@ -31,6 +32,10 @@ void Game2048::spawnTile() {
     }
 }
 
+void Game2048::addToScore(int value) {
+    score += value;
+}
+
 void Game2048::drawBoard() {
     clear();
     for (int i = 0; i < SIZE; ++i) {
@@ -49,7 +54,9 @@ void Game2048::moveLeft() {
         for (int j = 0; j < SIZE; ++j) {
             if (board[i][j].getValue() != 0) {
                 if (index > 0 && temp[index - 1] == board[i][j]) {
-                    temp[index - 1] *= 2;
+                    int mergedValue = board[i][j].getValue() * 2;
+                    temp[index - 1].setValue(mergedValue);
+                    addToScore(mergedValue); // Add to score when tiles merge
                     moved = true;
                 } else {
                     temp[index++] = board[i][j];
@@ -72,7 +79,9 @@ void Game2048::moveRight() {
         for (int j = SIZE - 1; j >= 0; --j) {
             if (board[i][j].getValue() != 0) {
                 if (index < SIZE - 1 && temp[index + 1] == board[i][j]) {
-                    temp[index + 1] *= 2;
+                    int mergedValue = board[i][j].getValue() * 2;
+                    temp[index + 1].setValue(mergedValue);
+                    addToScore(mergedValue); // Add to score when tiles merge
                     moved = true;
                 } else {
                     temp[index--] = board[i][j];
@@ -95,7 +104,9 @@ void Game2048::moveUp() {
         for (int i = 0; i < SIZE; ++i) {
             if (board[i][j].getValue() != 0) {
                 if (index > 0 && temp[index - 1] == board[i][j]) {
-                    temp[index - 1] *= 2;
+                    int mergedValue = board[i][j].getValue() * 2;
+                    temp[index - 1].setValue(mergedValue);
+                    addToScore(mergedValue); // Add to score when tiles merge
                     moved = true;
                 } else {
                     temp[index++] = board[i][j];
@@ -118,7 +129,9 @@ void Game2048::moveDown() {
         for (int i = SIZE - 1; i >= 0; --i) {
             if (board[i][j].getValue() != 0) {
                 if (index < SIZE - 1 && temp[index + 1] == board[i][j]) {
-                    temp[index + 1] *= 2;
+                    int mergedValue = board[i][j].getValue() * 2;
+                    temp[index + 1].setValue(mergedValue);
+                    addToScore(mergedValue); // Add to score when tiles merge
                     moved = true;
                 } else {
                     temp[index--] = board[i][j];
@@ -144,11 +157,7 @@ bool Game2048::canMove() {
     return false;
 }
 
-int Game2048::getScore() {
-    int score = 0;
-    for (int i = 0; i < SIZE; ++i)
-        for (int j = 0; j < SIZE; ++j)
-            score += board[i][j].getValue();
+int Game2048::getScore() const {
     return score;
 }
 
diff --git a/src/2048.o b/src/2048.o
index be2aee928509ea705690354e04eb0040bf3447ae..8980af415a3af453f1c2406f739659a30b323ac5 100644
GIT binary patch
delta 7948
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

delta 7209
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
MnI<$%zI9d&0L3cXbN~PV

diff --git a/src/Extra.cpp b/src/Extra.cpp
index 66f1cba..da68b9d 100644
--- a/src/Extra.cpp
+++ b/src/Extra.cpp
@@ -6,6 +6,47 @@ void initializeGame() {
     noecho();
     keypad(stdscr, TRUE);
     curs_set(0);
+    
+    // Initialize colors
+    if(has_colors()) {
+        start_color();
+        initColors();
+    }
+}
+
+void initColors() {
+    // Initialize color pairs
+    init_pair(COLOR_PAIR_DEFAULT, COLOR_BLACK, COLOR_WHITE);
+    init_pair(COLOR_PAIR_2, COLOR_BLACK, COLOR_GREEN);
+    init_pair(COLOR_PAIR_4, COLOR_BLACK, COLOR_CYAN);
+    init_pair(COLOR_PAIR_8, COLOR_BLACK, COLOR_BLUE);
+    init_pair(COLOR_PAIR_16, COLOR_BLACK, COLOR_MAGENTA);
+    init_pair(COLOR_PAIR_32, COLOR_BLACK, COLOR_RED);
+    init_pair(COLOR_PAIR_64, COLOR_WHITE, COLOR_BLUE);
+    init_pair(COLOR_PAIR_128, COLOR_WHITE, COLOR_MAGENTA);
+    init_pair(COLOR_PAIR_256, COLOR_WHITE, COLOR_RED);
+    init_pair(COLOR_PAIR_512, COLOR_WHITE, COLOR_YELLOW);
+    init_pair(COLOR_PAIR_1024, COLOR_BLACK, COLOR_YELLOW);
+    init_pair(COLOR_PAIR_2048, COLOR_WHITE, COLOR_GREEN);
+    init_pair(COLOR_PAIR_HIGHER, COLOR_WHITE, COLOR_RED);
+}
+
+int getTileColorPair(int value) {
+    switch(value) {
+        case 0: return COLOR_PAIR_DEFAULT;
+        case 2: return COLOR_PAIR_2;
+        case 4: return COLOR_PAIR_4;
+        case 8: return COLOR_PAIR_8;
+        case 16: return COLOR_PAIR_16;
+        case 32: return COLOR_PAIR_32;
+        case 64: return COLOR_PAIR_64;
+        case 128: return COLOR_PAIR_128;
+        case 256: return COLOR_PAIR_256;
+        case 512: return COLOR_PAIR_512;
+        case 1024: return COLOR_PAIR_1024;
+        case 2048: return COLOR_PAIR_2048;
+        default: return COLOR_PAIR_HIGHER; // For values > 2048
+    }
 }
 
 void cleanupGame() {
diff --git a/src/Extra.o b/src/Extra.o
index c65d8bce46bd620e67c5c97fa4d9dd37416bd3a8..432792b0a7526b491a41031367d7f06027aadfd2 100644
GIT binary patch
literal 4408
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
Z7K8+~nXu{q0dg<{14AW58JtAd4*=A>DZ&5%

delta 533
zcmdm?bbx<?hIj)D0~|PjSq==m3_KI<4H+j)KFB0IIg(jtatE`Eq%la+l~16J$(ffe
zi-(<qfq_AWfq}thvMS3=Mz+ZhnM5bcu!>B+z#=z!AB)gr16Bb><H?S!vqgm%7#YC2
z85kG@K&CJ-Fyu^5WEG#>z!p7OiCvbL6DkUF3-@GScJawR>^!`pP*ElZ1_s{Awd~?H
zd<+Z>fBr*&4pbJThaXAY21#5HNqq7Q9t|dAhRL6JEGC=t)=l2QtH9*UF!>g*nP31j
zM9%~W#lSULkx!qod9ovm^yC~q6)5WsFOQTV0|Nsi0|SErR3(gRW|$nruf}QxlAipK
zNtkgxSTjhA7Xt$WI|Bm)$QLl>AbJDC<V*Z&ib)_XSfnq2)G#nGL`=TPFRvTRz`y|V
zC?tlUQVa|X51=lGxrd8^fq`Rks(`kr2FRHV3=A8fG&chS1Lx$W0@|E6pe`w%d{e-j
OO8{gnC_+F%AqM~lU|gI4

diff --git a/src/UI.cpp b/src/UI.cpp
index 37f775b..630870c 100644
--- a/src/UI.cpp
+++ b/src/UI.cpp
@@ -1,17 +1,59 @@
 #include "UI.hpp"
 #include "2048.hpp"
+#include "Extra.hpp"
 #include <ncurses.h>
+#include <cstdlib>
 
 void UI::drawBoard(const Game2048& game) {
     clear();
+    
+    // Display title
+    attron(A_BOLD);
+    mvprintw(0, 0, "2048 Game");
+    attroff(A_BOLD);
+    
+    // Display the board
     for (int i = 0; i < SIZE; ++i) {
         for (int j = 0; j < SIZE; ++j) {
-            mvprintw(i * 2, j * 5, "%4d", game.getBoard()[i][j].getValue());
+            int value = game.getBoard()[i][j].getValue();
+            int colorPair = getTileColorPair(value);
+            
+            // Calculate position for the tile
+            int yPos = i * 2 + 2;
+            int xPos = j * 6;
+            
+            // Draw the tile with color
+            attron(COLOR_PAIR(colorPair) | A_BOLD);
+            if (value != 0) {
+                mvprintw(yPos, xPos, "%5d", value);
+            } else {
+                mvprintw(yPos, xPos, "     "); // Empty tile
+            }
+            attroff(COLOR_PAIR(colorPair) | A_BOLD);
         }
     }
+    
+    // Display the score with highlight
+    displayScore(game);
+    
+    // Display instructions
+    displayInstructions();
+    
     refresh();
 }
 
+void UI::displayScore(const Game2048& game) {
+    attron(COLOR_PAIR(COLOR_PAIR_HIGHER) | A_BOLD);
+    mvprintw(0, SIZE * 6 + 2, "Score: %d", game.getScore());
+    attroff(COLOR_PAIR(COLOR_PAIR_HIGHER) | A_BOLD);
+    
+    mvprintw(SIZE * 2 + 3, 0, "Score: %d", game.getScore());
+}
+
+void UI::displayInstructions() {
+    mvprintw(SIZE * 2 + 4, 0, "Controls: Arrow keys to move, 'r' to restart, 'q' to quit");
+}
+
 void UI::handleInput(Game2048& game) {
     int ch = getch();
     switch (ch) {
@@ -19,10 +61,27 @@ void UI::handleInput(Game2048& game) {
         case KEY_RIGHT: game.moveRight(); break;
         case KEY_UP: game.moveUp(); break;
         case KEY_DOWN: game.moveDown(); break;
+        case 'r': case 'R': game.resetBoard(); break; // Restart on 'r' key
+        case 'q': case 'Q': endwin(); exit(0); break; // Quit on 'q' key
     }
 }
 
-void UI::showGameOver() {
-    mvprintw(SIZE * 2, 0, "Game Over! Press any key to exit.");
-    getch();
+void UI::showGameOver(Game2048& game) {
+    attron(COLOR_PAIR(COLOR_PAIR_HIGHER) | A_BOLD);
+    mvprintw(SIZE * 2 + 6, 0, "GAME OVER!");
+    attroff(COLOR_PAIR(COLOR_PAIR_HIGHER) | A_BOLD);
+    
+    mvprintw(SIZE * 2 + 7, 0, "Press 'r' to restart or 'q' to quit");
+    refresh();
+    
+    while (true) {
+        int ch = getch();
+        if (ch == 'r' || ch == 'R') {
+            game.resetBoard();
+            break;
+        } else if (ch == 'q' || ch == 'Q') {
+            endwin();
+            exit(0);
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/UI.o b/src/UI.o
index 6884c76d42125ee5b58f5bdb8aee7765dd1e54f6..30433495b505e870cdf9860ba7f717ff9de76884 100644
GIT binary patch
literal 5360
zcmb<-^>JfjWMqH=Mg}_u1P><4z)&EFU^{@B4h(z@ybPcD<$i^FbUyWHeq-R#S$o5y
zv-H9Xki17XD~Q?!BK9#bC@^?*9*0QuibBO081{o$J3s_P3YVVau3-7*+850H{cMa3
z498vHfOIw2zG3F?2QfXmT`$0F=nj41k$lPH;3F0f#zWn%Z#-sr9DKm!!3bB->H4AD
z^#jyBovvTHU0*aGU}QYd>H4EP^iAgl#siEOK)gTQu3rv5;NahWfEVP0&V$IF>O2Rt
zuetUELy1Cn=!fpoKi#fBIxl)ayx4gh;kDP&-M%16nAACBNg}OreZ%;Y>;M1%&8{yP
zUw-)a|G!6f=mn2%*Bc(4*I;gea3LWL4zmd-4<p5qfJbNT50B2$56C{*$H0peJ>9M!
zV1{)bggSSh6a#_CB4`3Ay7qH3Ffbs(WWveA6ENHc3A%k?<vi%hkyI;qbk@G`=q!Bz
z^$Fa~u74V9|FAMLFqG6o8T|b_85kHEYyYr-M5Cb${{F=fQD%^6Vq@(e5QD$J7b408
z5{+!E{R3juS2x%GDJqEok@fk_wSNjrqCjMQa&zsUz!Jaa+CM=hR<A=nx?LZ@9P-*7
zg=dMv(?;RRqVV{^@dnNsU>0f&qWc?~!H~lrISBbsf)E;31oZHu=mEO{suAY5PS-!6
zpeSJjdAyVl#re{pfC0+{mYx7>M)3+LVnNu*z{EnqJux?xLDe*cK>-99f|K)$QmqtJ
zQy3VW^YcoI@^gx<6da3+^2-&nQ!9%VO7azQ^UG3o6x55<L7bx0;*!Lo5*-EgLNLFu
zG_!=k-O<-o!9UD3ND*XBKv8OOF`9aX{2~+`4DQa(Rtg%SNu_xur3#jMCVB?ChNWPh
zVV#kIo`H#;ktRf(frWvAL4bjQ0aUoT`-L(vF)$nei7|sLV_;wqfzpgsK@5x)0*ul;
z>>Lvq85m?3AQ&XQ1XRGf@(HvtIrFkH&t~Ld=K#ywfFv0h7-oZLm^{-YkTh661|-hF
zz@P`BVe+Y9X|Q|^NSuLz;RlF@$uqqND*)L)2PDqGz;GHw!{rZw<v~K&FvzJa3?Khv
zlViqOQ!p?vGr&RvRTncj^iah>JZ5lcf>;R5!N9=4h$Iej2TYckfgQ#~p_v&#x=@6`
z9A*YiFpW+yGq9lxF(@-IFbE;}3mjJr3=E(;4;1g{8p5FI0bLvvSJ>1i<4~W2L%bA+
zcs&mB892n(;t)R!^)Jky;IzlU!0-er?!W}`892=`Fff2hLu~%yVua)ih-w6>%m@k3
zJg7O~w8_B0;DkfHCl2vM9O6|t#6fuun>$zFP=6SQ_$eIX=b`>egC=!wo&tG0)Kf3H
zpnxGhD!9bQ(6S&iH956Bvp6+AIX|zsq^LBxgdsl4&nVQ>GNmZ7+$le?D8)6%+X7S&
zf=Wb&cy}LvCr6)ne>b;a*O2%SM<*ZGc!uPh)Wjl&;*yl&<RXUh#FCPt`20ME+_HkA
z%)F9vm`GY0$ZUjR7U`)a5F5(C5+)&;IjJDQu*96wR9BFop;>xr2}syEKPSH^AThHj
z6QtBA)YH%?C9}97C$SP-D5JU&>;Xedr~*%@$1?Ntie1YXic-^xQj0S{#-KU{Vi3qy
zkpB%0GZOPsa#B6>3Q9{{gAgH5o}OBg4Au@8vjCO)KB;LXU^n~0#VtYNL7C|p=n`fi
ziO>Qx<zQo6^2_tk#0?FKQi~Bmm714Qo|(sxT9FBhD?_8=jQny?9Ql`}79l&90o;~l
zU;vkFybKHsfBr)NsJsOw2T-yH)xj`vSUv*P8K8O=CT<E+49Z{7y5%p#nE#$oagcgY
zdWNYFfQqA=p9B>LsRuRLVd^I!i3=gQb0d<tFp@a90S5IKs7`~K^AV~Z-CkIc39=X2
zUlP!Q8>AjoXTnNu6{t8!J+i-yq2e(0+)(=*q2lQ3BcS3S^~m9z4iyKfM-GP`BymvO
z!TdD?Nn8vm9Ofd4izA8ehKi%xdlo7VvKKiVZX$_GAer+BDh@IS6h0ugg1r0<Dh@IS
zIeh*?#X;(k{mTy$fW{Zd44A*9k;IYhRe_3wC}evrKmt&6knIhIii0SSdRY2S2MJ(N
z-wG86QONG>1qndagE|#3cZxyFQILP7k-|p>NgQM+OuZ43xGa)-2PAPhBym3^ad{;1
zP$Y2$B=LA8aZp1NW^XN29OMmTfAvGfLGDM6_i0dZka|$Kf!Yh8_+14R2dPI6=Z#Qt
zka}eE4@1R4>XGC36jU6f9%OzB$Z!S*hI>$Pka}eEA0vq)r{`BtagaI4_I`qjgUmsW
zFJ6!UG#-(|QvpdFIXtzH#F4`jqz2?<ki8%bVuLWKy#=B{Vjv7_pCo_;q2(k<9M(Q*
zKof_xHx{6Y!|H1Wz2eH;lEfqiz2cH02%Q0A6{Y4R>XoEclrZR}B$gyH=p_{wGw2oN
zLpaI#xw)x%B@B9b`6a1(?tY=V#U+W!*-(CZUa4L|QGP*cQAs6(9@wPRjQF%7P)7&q
z6pAQNc!7!l^p-0uybPh?46_6jMld#r2IVb~5}10B7zjH+3t9(IB4S`*0C7R~z*^Lx
zvIC?}4csmVwedkb1TF*_ir~UoAT!_`1_lNl1_p2|9h$7*QpD;vgxZhpuL`LBJ#Z5t
z44C^NJO&0!sD1;O0F-8d`Wxgvs1TTfxgSP5LG^<rkq85*ek36<6Q&Q$VPIegVqgIG
zUeMhS(+`SYm|75x?*1&O{pk7wp!S1DS3nw}7+rrVG|!^Pe*>tHU|?XVfa(LqKPNP<
zKtizi2l)rxZjd|&G(mbmBNjAt12O|<KTJQ!OsEo&HaHFdNiZ-lya!nT7X|eJkvI$t
V44|?PoBkhA_m`k5hc!#!q5#B}Ls<X-

delta 1101
zcmeyMIYDBA2GazNiCT*F3Lc%cFFZO+AG}~-U|=}z`U6BY*ZyFx&pz(@2g3QoTp!`l
z?fSr@^Eg;lcjym~<Vzk0AF+5a9_n`e<1xeI-~%QP#tSe7od>%^|8!nB_<*U`M4;RC
z2jc;cUQv))oyT{8D6lEbu74O`3oL4O{lWOUA1pHA<lzaE*D>j(+cwtzVP#}ssE=)|
z{lmh@z)&I!Wz>5&*8X7viI_Il{$U0&<X)R2JMOh63Qrn^$BWFHF!>>)2rtB8`#{dx
z&oTKSv&dvU77pDBCl50)sG6jJgxwQ!Qx*KnQi~K70*X?Lixm>{DiyL*D-}xe6;dlQ
zOY|l)v+6Q3Ox9<04V($m;L0b^#^lV)#x#M4or8fvhJk^>1|-hFz%T<u!{z(o@-ZNB
z1_lOO5Dk+r;bG^PTqr2LSb>d^6KpaA1B1h4M|Sba4(tY#7qCk(c7b?|lR>29Yz77f
zAqGZ<Ss*iDb}=w8>;lO$9t4voz~lok`4dd?Pd4Nb7gT42=rv-5Xttf~$(cO)Jg1&n
zZdpN5W?o4-Ls4p4QEG7pLwuB<QK+Y(VMbzJN=~Y0UO{PzYmfyfkc<pWEEtMQQi_v{
zCQszbnykbv#8k#G*^XOE(i&nc0}BHK10Mqe!=L{U5Hq=uTU@dfD$B&cz`)AD!0;C$
z`M+`ULT+)!Ns}*fi>q!#QX`CH!cM3-$YhbpwmjmK|M2ig@<IIp5*0&IEi+k>SG-;e
zNmc?$))guaa|cK_$oNR8IEXKRq&@*E4pNWorVOY!NWBP>dIgYS3=EUo1r()Vv6KK2
zV*r@}!bXgfKMCC9&4(HRmYr-UB0TwnpafR{8<@|~z&Ke*$c$+{<K#j?vB?QS8ZhPp
zAq~zAP_0^%FAAA6-C~@~C2YsU#spC+tii;=G`UOIj#C3<8v_GF#pH{^=A0MUAtrlF
p78Eh(S^$+RV455xV#X-|iWCM02D`}<Ma(%RI3P+(CI<@10|0MJBRBv6

diff --git a/src/main.cpp b/src/main.cpp
index 2ad697a..8708fb4 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -4,6 +4,7 @@
 #include <ncurses.h>
 
 int main() {
+    // Initialize the game and colors
     initializeGame();
 
     Game2048 game;
@@ -16,8 +17,9 @@ int main() {
         ui.drawBoard(game);
 
         if (!game.canMove()) {
-            ui.showGameOver();
-            break;
+            ui.showGameOver(game);
+            // After restart, redraw the board
+            ui.drawBoard(game);
         }
     }
 
diff --git a/src/main.o b/src/main.o
index 81e031e499cf37f1c37af6a7495a82b1b505cd12..618be4a5c4dc1eefa3ddc87ac01405fe3e818fbd 100644
GIT binary patch
delta 204
zcmX>hbVG2024loT&508mRhVASpZL^ZvIL_G?*aw}1_oC?fi@;*Ube{>S>+dZFfuYO
znB2*<esTu$S*{=p_r%;(BLfqQ$?+@`8QUj+WD#eaHF+Y7_+$&#4~z>YYqFVha<G6*
zVPH5gIg`zNasV^S<Rxr2VEPG^R$;ecd^kCg-JX$m@<MidMuEu>+3gt(CM$B-Go4_W
moWx<rnZXD#<izBa9Oj$`%n;s<$uBv~IUhhRD4DFuCJz8*R5x@0

delta 349
zcmca1ctU7`2IGl|niI8M*L!pxf5E`Oz%T(!?f@}8x_y77co_4jYA`S`l(2#&P9C24
zz+f^jqr1>jkP=rufi@;*UN)vVJnS5k6B(rzH!w0XE}h)Sw4U+&<b_P)lMUEdCNE(U
znQXv(R;!F5KFZKAIVUwSue88DF*mi0AwIsiBr!QVJ~<;hJ}ogb2V^J%1H)u?mWj3v
zP!0<N1A`C)1H+&H5YUDsE{r5TA4yzf@?MtTj7ujMG73*V!>YoW05XJuf#JsFpRDGL
zPbV9)*)u+!TnHvNve`2}oBWZ@o>6GBA-g@J#N<MDdq#`N8`<rdELbOhVz=WgV1$_c
fW3nZOIcEklg!d6_d=G~TX8<ciqy#K-hLr~ZoDX6^

-- 
GitLab