From 1a120a54311f9e977b0c67badb1a3212042b0840 Mon Sep 17 00:00:00 2001
From: Jamal <fredrick2.enoime@live.uwe.ac.uk>
Date: Sat, 26 Apr 2025 00:14:08 +0100
Subject: [PATCH] improvement

---
 2048             | Bin 38528 -> 38648 bytes
 include/2048.hpp |   6 ++++--
 include/Tile.hpp |   4 ++++
 include/UI.hpp   |   1 +
 src/2048.cpp     |  43 ++++++++++++++++++++++++-------------------
 src/2048.o       | Bin 49952 -> 52280 bytes
 src/Tile.cpp     |  14 ++++++++++++++
 src/Tile.o       | Bin 1672 -> 2072 bytes
 src/UI.cpp       |   2 +-
 src/UI.o         | Bin 3016 -> 3088 bytes
 10 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/2048 b/2048
index 012dd31c904f6c63d21b5e01db62b883bef602db..9282b48a78ef1c2e12b4549b31ee62da69605d49 100755
GIT binary patch
delta 10933
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

delta 9491
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
Kpvf1fsRICI;|6a4

diff --git a/include/2048.hpp b/include/2048.hpp
index 47f983c..7ae5bbc 100644
--- a/include/2048.hpp
+++ b/include/2048.hpp
@@ -2,11 +2,13 @@
 #define GAME2048_HPP
 
 #include <vector>
+#include "Tile.hpp"
+
 #define SIZE 4
 
 class Game2048 {
 private:
-    int board[SIZE][SIZE];
+    Tile board[SIZE][SIZE];
     bool moved;
 
     void spawnTile();
@@ -21,7 +23,7 @@ public:
     void moveDown();
     bool canMove();
     int getScore();
-    const int (*getBoard() const)[SIZE]; // Mark this method as const
+    const Tile (*getBoard() const)[SIZE]; // Return Tile array instead of int array
 };
 
 #endif
\ No newline at end of file
diff --git a/include/Tile.hpp b/include/Tile.hpp
index ecf494e..b2f33e5 100644
--- a/include/Tile.hpp
+++ b/include/Tile.hpp
@@ -9,6 +9,10 @@ public:
     Tile();
     void setValue(int val);
     int getValue() const;
+    // Add operators to make working with Tiles easier
+    bool operator==(const Tile& other) const;
+    Tile& operator*=(int multiplier);
+    Tile& operator=(const Tile& other);
 };
 
 #endif
\ No newline at end of file
diff --git a/include/UI.hpp b/include/UI.hpp
index b6d6424..36c9d78 100644
--- a/include/UI.hpp
+++ b/include/UI.hpp
@@ -1,6 +1,7 @@
 #ifndef UI_HPP
 #define UI_HPP
 
+#include <ncurses.h>
 #include "2048.hpp"
 
 class UI {
diff --git a/src/2048.cpp b/src/2048.cpp
index 331e64d..6e64e22 100644
--- a/src/2048.cpp
+++ b/src/2048.cpp
@@ -12,7 +12,7 @@ Game2048::Game2048() {
 void Game2048::resetBoard() {
     for (int i = 0; i < SIZE; ++i)
         for (int j = 0; j < SIZE; ++j)
-            board[i][j] = 0;
+            board[i][j].setValue(0);
     spawnTile();
     spawnTile();
 }
@@ -21,12 +21,13 @@ void Game2048::spawnTile() {
     std::vector<std::pair<int, int>> emptyTiles;
     for (int i = 0; i < SIZE; ++i)
         for (int j = 0; j < SIZE; ++j)
-            if (board[i][j] == 0)
+            if (board[i][j].getValue() == 0)
                 emptyTiles.push_back({i, j});
 
     if (!emptyTiles.empty()) {
         int idx = std::rand() % emptyTiles.size();
-        board[emptyTiles[idx].first][emptyTiles[idx].second] = (std::rand() % 10 == 0) ? 4 : 2;
+        int newValue = (std::rand() % 10 == 0) ? 4 : 2;
+        board[emptyTiles[idx].first][emptyTiles[idx].second].setValue(newValue);
     }
 }
 
@@ -34,7 +35,7 @@ void Game2048::drawBoard() {
     clear();
     for (int i = 0; i < SIZE; ++i) {
         for (int j = 0; j < SIZE; ++j) {
-            mvprintw(i * 2, j * 5, "%4d", board[i][j]);
+            mvprintw(i * 2, j * 5, "%4d", board[i][j].getValue());
         }
     }
     refresh();
@@ -43,9 +44,10 @@ void Game2048::drawBoard() {
 void Game2048::moveLeft() {
     moved = false;
     for (int i = 0; i < SIZE; ++i) {
-        int temp[SIZE] = {0}, index = 0;
+        Tile temp[SIZE];
+        int index = 0;
         for (int j = 0; j < SIZE; ++j) {
-            if (board[i][j] != 0) {
+            if (board[i][j].getValue() != 0) {
                 if (index > 0 && temp[index - 1] == board[i][j]) {
                     temp[index - 1] *= 2;
                     moved = true;
@@ -55,7 +57,7 @@ void Game2048::moveLeft() {
             }
         }
         for (int j = 0; j < SIZE; ++j) {
-            if (board[i][j] != temp[j]) moved = true;
+            if (board[i][j].getValue() != temp[j].getValue()) moved = true;
             board[i][j] = temp[j];
         }
     }
@@ -65,9 +67,10 @@ void Game2048::moveLeft() {
 void Game2048::moveRight() {
     moved = false;
     for (int i = 0; i < SIZE; ++i) {
-        int temp[SIZE] = {0}, index = SIZE - 1;
+        Tile temp[SIZE];
+        int index = SIZE - 1;
         for (int j = SIZE - 1; j >= 0; --j) {
-            if (board[i][j] != 0) {
+            if (board[i][j].getValue() != 0) {
                 if (index < SIZE - 1 && temp[index + 1] == board[i][j]) {
                     temp[index + 1] *= 2;
                     moved = true;
@@ -77,7 +80,7 @@ void Game2048::moveRight() {
             }
         }
         for (int j = 0; j < SIZE; ++j) {
-            if (board[i][j] != temp[j]) moved = true;
+            if (board[i][j].getValue() != temp[j].getValue()) moved = true;
             board[i][j] = temp[j];
         }
     }
@@ -87,9 +90,10 @@ void Game2048::moveRight() {
 void Game2048::moveUp() {
     moved = false;
     for (int j = 0; j < SIZE; ++j) {
-        int temp[SIZE] = {0}, index = 0;
+        Tile temp[SIZE];
+        int index = 0;
         for (int i = 0; i < SIZE; ++i) {
-            if (board[i][j] != 0) {
+            if (board[i][j].getValue() != 0) {
                 if (index > 0 && temp[index - 1] == board[i][j]) {
                     temp[index - 1] *= 2;
                     moved = true;
@@ -99,7 +103,7 @@ void Game2048::moveUp() {
             }
         }
         for (int i = 0; i < SIZE; ++i) {
-            if (board[i][j] != temp[i]) moved = true;
+            if (board[i][j].getValue() != temp[i].getValue()) moved = true;
             board[i][j] = temp[i];
         }
     }
@@ -109,9 +113,10 @@ void Game2048::moveUp() {
 void Game2048::moveDown() {
     moved = false;
     for (int j = 0; j < SIZE; ++j) {
-        int temp[SIZE] = {0}, index = SIZE - 1;
+        Tile temp[SIZE];
+        int index = SIZE - 1;
         for (int i = SIZE - 1; i >= 0; --i) {
-            if (board[i][j] != 0) {
+            if (board[i][j].getValue() != 0) {
                 if (index < SIZE - 1 && temp[index + 1] == board[i][j]) {
                     temp[index + 1] *= 2;
                     moved = true;
@@ -121,7 +126,7 @@ void Game2048::moveDown() {
             }
         }
         for (int i = 0; i < SIZE; ++i) {
-            if (board[i][j] != temp[i]) moved = true;
+            if (board[i][j].getValue() != temp[i].getValue()) moved = true;
             board[i][j] = temp[i];
         }
     }
@@ -131,7 +136,7 @@ void Game2048::moveDown() {
 bool Game2048::canMove() {
     for (int i = 0; i < SIZE; ++i) {
         for (int j = 0; j < SIZE; ++j) {
-            if (board[i][j] == 0) return true;
+            if (board[i][j].getValue() == 0) return true;
             if (j < SIZE - 1 && board[i][j] == board[i][j + 1]) return true;
             if (i < SIZE - 1 && board[i][j] == board[i + 1][j]) return true;
         }
@@ -143,10 +148,10 @@ int Game2048::getScore() {
     int score = 0;
     for (int i = 0; i < SIZE; ++i)
         for (int j = 0; j < SIZE; ++j)
-            score += board[i][j];
+            score += board[i][j].getValue();
     return score;
 }
 
-const int (*Game2048::getBoard() const)[SIZE] {
+const Tile (*Game2048::getBoard() const)[SIZE] {
     return board;
 }
\ No newline at end of file
diff --git a/src/2048.o b/src/2048.o
index c199e0a7f2d9e698883681c10d56548e2bc2d52c..be2aee928509ea705690354e04eb0040bf3447ae 100644
GIT binary patch
delta 12665
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

delta 10745
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
E0Q5)B1ONa4

diff --git a/src/Tile.cpp b/src/Tile.cpp
index 47e1f43..5a169ff 100644
--- a/src/Tile.cpp
+++ b/src/Tile.cpp
@@ -8,4 +8,18 @@ void Tile::setValue(int val) {
 
 int Tile::getValue() const {
     return value;
+}
+
+bool Tile::operator==(const Tile& other) const {
+    return value == other.value;
+}
+
+Tile& Tile::operator*=(int multiplier) {
+    value *= multiplier;
+    return *this;
+}
+
+Tile& Tile::operator=(const Tile& other) {
+    value = other.value;
+    return *this;
 }
\ No newline at end of file
diff --git a/src/Tile.o b/src/Tile.o
index 2a327ba1ea273fc432998dbffe86016cddae3aa5..1b59067a351aef7c08d4b68177f2cdf568c89426 100644
GIT binary patch
delta 553
zcmeC+ogpwmgGqvQqE<rvXMVX~p&p%2JvwWDcyyM2@aT5^(JkQ7?fRjc!SWFQlmoGc
zCm^foEd2sj!oa`Y^-Jd=5W5qk{0Evks97JtX8nLEVQ_bLwo=dtO)AYRDOIr4GnqJB
zcH*{Ku`&z{3^fc8pbVm1`2^aSoO#)zc-T1@7#KkEb3oz@3=HZZ8YUlyklzCmXJBAZ
z0?{z}NFH{M$rG8SH)k*^Fgp4&Ffa%)Ffw?7lrS(bfURO+V2Fc?=Rw86RxmIyWJATL
zLB*9OH!_9j$4B{jn}lTMq^1_S26+d^GsH*vf%&;Uu9<L7VlYIKVe%CwAIAo$2}}$O
z3?K}1!2&dKm<tY|iBFp>$$Xx1$K;pH=8QikE3()#{+OHyCKs~UGpR664rCOY{DVb<
zNrQ2+6004j2P4FQ8<R6x%{diVAiN2aSAuvT2QV-&G)#WUYR<WU86sCbS(DA2a|2Xm
J`eaQOc>u%5fDixx

delta 151
zcmbOs(7`)FgQ<ggqE^DhA9|BD7-vjYVU^fy!KA=Ac>%NUWLXyP$s1TsFnUd{WHo2(
zn!J(Kp0R84M=)u~X3w~7@<vwm$urm_n07Es-o$3dd4mB0DklGAGv~a)1mSs1wq!Tw
h3}A%tEGAd7n{#$R<$NdaWH;wjV1~%0Pu|HY4*(P;CHw#Y

diff --git a/src/UI.cpp b/src/UI.cpp
index b27a33c..37f775b 100644
--- a/src/UI.cpp
+++ b/src/UI.cpp
@@ -6,7 +6,7 @@ void UI::drawBoard(const Game2048& game) {
     clear();
     for (int i = 0; i < SIZE; ++i) {
         for (int j = 0; j < SIZE; ++j) {
-            mvprintw(i * 2, j * 5, "%4d", game.getBoard()[i][j]); // Now this works
+            mvprintw(i * 2, j * 5, "%4d", game.getBoard()[i][j].getValue());
         }
     }
     refresh();
diff --git a/src/UI.o b/src/UI.o
index 7f1f66b496bcb640693deb1bacbfcd0cab9b099b..6884c76d42125ee5b58f5bdb8aee7765dd1e54f6 100644
GIT binary patch
delta 606
zcmX>hK0#uF2IGW@nl`rC$6fz0FfcGQ*ZyIykMQVrec;h~`~^s)JM@P~@+FUhk61hy
z4|Ti#@tEOp@Bxzt;{}+4&Vv)DXb3E7cKyNlx*x1%!pXxECOU{rd~kU3O2*mzGeO3<
z@(HvtIrFkHP1qdF6wAmsbMi*!bjGg97n#KwCxb}I*$fN}LJW)yvp~uj7#L<i>0KaM
z#)Dw;1ekmPCVzrRR(?hX27$>JnS?pj86o<OCO>3p5sHuU^EL^|%t^IKPb~>c%qdNs
zoW#0wvI3idWDL|`76t|eeg+1HKmQ@1baEh@IAi1FMmBN7Nl0o0k<@I2iZd}VFbE@w
z@0@&+Exulh5h4vTSprGc6)FzW#md0I0Fno(jD(7V_yS1k6QJTC^~knlK*d4oMUd1h
zfDB_`nB32<$T(~AMs{&Vqsb@P?=$94Uddt38NddSZkYU%!<=#bWJOMU#`TjEIqexY
zOkT)o&v<L{Lr!}pHm1pe9Ac9<FtJRw;ZkAbn4HLE&!{nZA(#E+1>78yUvOD)E&#cQ
nfq|i5vL?4VrvS(&3=9l*lQX%^IVCtCmXu6h$Rs@3hLZ;Xbvv}$

delta 517
zcmbOraYB582BXJBO&k5#<F0=g7#J9uYyU9UdwF!bKJe%~{sJV@9s0u~`I5)MM=TzU
zhq_(=c+BYLX_~l5gMCA@>kr1)b0=PWzyeY?c|GG?{%#P<l~16J$(fgpscCaGQ!FE6
z_vD?->5O%g4>F5OwlOd;2r)1+^nesHFfh!3(n~?IjBCK;W-xggOg;gVzd$6X5F<pd
z%49~?mdUeNw=pp=O!j3nmQ05l!o<M9z{<eD@b^Ci6i;qs6K8Chypc`Za50h^AqED9
zKM*DVS3|`?eh@|y|1|k0TRfxr<U)3FTW>~)B9Iz>BsD=$age>pW=289LF$DkA7wX|
zgn2gsVh{sJ2MDW77Ua0km^k?(hdHML8$>c=vLUBA(?Z6{3z@_wH*jjem<KpD7*|Yw
z$!X7cX|g7lJ<~s^3N8&shRG|r>=_j%zvQxK?3k>{ZO=IaWI6)_L&W4lZgb8LAeS&O
VFlbKR$ZgJffgNH|$>c&#c>qrHlA8bk

-- 
GitLab