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 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 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_+$~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