From 3500875fe4ca1e8365bd4c362c2f28d4f692e061 Mon Sep 17 00:00:00 2001 From: Jamal <fredrick2.enoime@live.uwe.ac.uk> Date: Thu, 20 Feb 2025 15:44:53 +0000 Subject: [PATCH] rough start- only left direction works --- 2048 | Bin 0 -> 33944 bytes 2048.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2048.hpp | 25 ++++++++++++++++++++++ main.cpp | 24 +++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100755 2048 diff --git a/2048 b/2048 new file mode 100755 index 0000000000000000000000000000000000000000..2822740d6a916791aeea15318772db1a1da7d0d7 GIT binary patch literal 33944 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 K5W<3x==uSfhWh;g literal 0 HcmV?d00001 diff --git a/2048.cpp b/2048.cpp index e69de29..9d03545 100644 --- a/2048.cpp +++ b/2048.cpp @@ -0,0 +1,62 @@ +#include "2048.hpp" +#include <iostream> +#include <cstdlib> +#include <ctime> + +Game2048::Game2048() { + std::srand(std::time(0)); + resetBoard(); +} + +void Game2048::resetBoard() { + for (int i = 0; i < SIZE; ++i) + for (int j = 0; j < SIZE; ++j) + board[i][j] = 0; + spawnTile(); + spawnTile(); +} + +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) + 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; + } +} + +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]); + } + } + refresh(); +} + +void Game2048::moveLeft() { + moved = false; + for (int i = 0; i < SIZE; ++i) { + int temp[SIZE] = {0}, index = 0; + for (int j = 0; j < SIZE; ++j) { + if (board[i][j] != 0) { + if (index > 0 && temp[index - 1] == board[i][j]) { + temp[index - 1] *= 2; + moved = true; + } else { + temp[index++] = board[i][j]; + } + } + } + for (int j = 0; j < SIZE; ++j) { + if (board[i][j] != temp[j]) moved = true; + board[i][j] = temp[j]; + } + } + if (moved) spawnTile(); +} diff --git a/2048.hpp b/2048.hpp index e69de29..d4aeab9 100644 --- a/2048.hpp +++ b/2048.hpp @@ -0,0 +1,25 @@ +#ifndef GAME_2048_HPP +#define GAME_2048_HPP + +#include <vector> +#include <ncurses.h> + +class Game2048 { +private: + static const int SIZE = 4; + int board[SIZE][SIZE]; + bool moved; + +public: + Game2048(); + void resetBoard(); + void spawnTile(); + void drawBoard(); + void moveLeft(); + void moveRight(); + void moveUp(); + void moveDown(); + bool isGameOver(); +}; + +#endif // GAME_2048_HPP diff --git a/main.cpp b/main.cpp index e69de29..bc0a5c8 100644 --- a/main.cpp +++ b/main.cpp @@ -0,0 +1,24 @@ +#include "2048.hpp" +#include <ncurses.h> + +int main() { + initscr(); + noecho(); + keypad(stdscr, TRUE); + curs_set(0); + + Game2048 game; + game.drawBoard(); + + int ch; + while ((ch = getch()) != 'q') { + switch (ch) { + case KEY_LEFT: game.moveLeft(); break; + // TODO: Add moveRight(), moveUp(), moveDown() + } + game.drawBoard(); + } + + endwin(); + return 0; +} -- GitLab