From f43d3666fa683da7554e2042c3be93f674e5cf74 Mon Sep 17 00:00:00 2001 From: Abdirahim Ahmed <abdirahim3.ahmed@live.uwe.ac.uk> Date: Thu, 27 Mar 2025 10:46:30 +0000 Subject: [PATCH] Remove temporary folder and clean up project structure --- game.cpp | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ game2048 | Bin 0 -> 21992 bytes game2048.hpp | 21 ++++++ game_logic.hpp | 0 main.cpp | 7 ++ 5 files changed, 228 insertions(+) create mode 100644 game.cpp create mode 100755 game2048 create mode 100644 game2048.hpp create mode 100644 game_logic.hpp create mode 100644 main.cpp diff --git a/game.cpp b/game.cpp new file mode 100644 index 0000000..84a727c --- /dev/null +++ b/game.cpp @@ -0,0 +1,200 @@ +#include "game2048.hpp" +#include <iostream> + +Game2048::Game2048() { // Start my game + score = 0; // Points start at 0 + for (int r = 0; r < 4; r++) { + for (int c = 0; c < 4; c++) { + board[r][c] = 0; + } + } + board[0][0] = 2; // Put a 2 in top left + board[0][1] = 2; // Put another 2 next to it +} + +void Game2048::show() { // Show my tiles in boxes + for (int r = 0; r < 4; r++) { // Look at each row + std::cout << "+---+---+---+---+"; // Draw top of boxes + std::cout << "\n"; // Go to new line + for (int c = 0; c < 4; c++) { + std::cout << "| "; // Start a box + if (board[r][c] == 0) { + std::cout << " "; // Just a space + } else { + std::cout << board[r][c]; // Show the number + } + std::cout << " "; + } + std::cout << "|"; + std::cout << "\n"; // Go to new line + } + std::cout << "+---+---+---+---+"; + std::cout << "\n"; // Go to new line + std::cout << "Points: " << score << "\n"; // Show my points + std::cout << "\n"; // Extra space +} + +void Game2048::addTile() { // Add a new number + for (int r = 0; r < 4; r++) { // Check all rows + for (int c = 0; c < 4; c++) { // Check all spots + if (board[r][c] == 0) { // If it’s empty + if (r < 2) { // Top rows get 2 + board[r][c] = 2; // Put a 2 + } else { // Bottom rows get 4 + board[r][c] = 4; // Put a 4 + } + return; // Stop after one + } + } + } +} + +bool Game2048::canMove() { // Can I slide tiles? + for (int r = 0; r < 4; r++) { // Check every row + for (int c = 0; c < 4; c++) { // Check every spot + if (board[r][c] == 0) { // Empty spot? + return true; // Yes, I can move + } + if (c < 3) { // Not at end of row + if (board[r][c] == board[r][c + 1]) { // Same numbers next to each other + return true; // I can squish them + } + } + if (r < 3) { // Not at bottom + if (board[r][c] == board[r + 1][c]) { // Same numbers up and down + return true; // I can squish these + } + } + } + } + return false; // No sliding possible +} + +void Game2048::moveLeft() { // Slide tiles left + for (int r = 0; r < 4; r++) { // Do every row + for (int c = 0; c < 3; c++) { // Look at spots 0 to 2 + if (board[r][c] == 0) { // If spot is empty + board[r][c] = board[r][c + 1]; // Move next number here + board[r][c + 1] = 0; // Empty the next spot + } + } + for (int c = 0; c < 3; c++) { // Squish same numbers + if (board[r][c] != 0 && board[r][c] == board[r][c + 1]) { // If they’re the same + board[r][c] = board[r][c] * 2; // Make it bigger + score = score + board[r][c]; // Add points + board[r][c + 1] = 0; // Empty the next one + } + } + for (int c = 0; c < 3; c++) { // Slide again to fill gaps + if (board[r][c] == 0) { // If spot is empty + board[r][c] = board[r][c + 1]; // Move next number here + board[r][c + 1] = 0; // Empty the next spot + } + } + } + if (canMove()) addTile(); // Add a number if I can slide +} + +void Game2048::moveRight() { // Slide tiles right + for (int r = 0; r < 4; r++) { // Do every row + for (int c = 3; c > 0; c--) { // Look at spots 3 to 1 + if (board[r][c] == 0) { // If spot is empty + board[r][c] = board[r][c - 1]; // Move left number here + board[r][c - 1] = 0; // Empty the left spot + } + } + for (int c = 3; c > 0; c--) { // Squish same numbers + if (board[r][c] != 0 && board[r][c] == board[r][c - 1]) { // If they’re the same + board[r][c] = board[r][c] * 2; // Make it bigger + score = score + board[r][c]; // Add points + board[r][c - 1] = 0; // Empty the left one + } + } + for (int c = 3; c > 0; c--) { // Slide again to fill gaps + if (board[r][c] == 0) { // If spot is empty + board[r][c] = board[r][c - 1]; // Move left number here + board[r][c - 1] = 0; // Empty the left spot + } + } + } + if (canMove()) addTile(); // Add a number if I can slide +} + +void Game2048::moveUp() { // Slide tiles up + for (int c = 0; c < 4; c++) { // Do every column + for (int r = 0; r < 3; r++) { // Look at rows 0 to 2 + if (board[r][c] == 0) { // If spot is empty + board[r][c] = board[r + 1][c]; // Move down number up + board[r + 1][c] = 0; // Empty the down spot + } + } + for (int r = 0; r < 3; r++) { // Squish same numbers + if (board[r][c] != 0 && board[r][c] == board[r + 1][c]) { // If they’re the same + board[r][c] = board[r][c] * 2; // Make it bigger + score = score + board[r][c]; // Add points + board[r + 1][c] = 0; // Empty the next one + } + } + for (int r = 0; r < 3; r++) { // Slide again to fill gaps + if (board[r][c] == 0) { // If spot is empty + board[r][c] = board[r + 1][c]; // Move down number up + board[r + 1][c] = 0; // Empty the down spot + } + } + } + if (canMove()) addTile(); // Add a number if I can slide +} + +void Game2048::moveDown() { // Slide tiles down + for (int c = 0; c < 4; c++) { // Do every column + for (int r = 3; r > 0; r--) { // Look at rows 3 to 1 + if (board[r][c] == 0) { // If spot is empty + board[r][c] = board[r - 1][c]; // Move up number down + board[r - 1][c] = 0; // Empty the up spot + } + } + for (int r = 3; r > 0; r--) { // Squish same numbers + if (board[r][c] != 0 && board[r][c] == board[r - 1][c]) { + board[r][c] = board[r][c] * 2; + score = score + board[r][c]; + board[r - 1][c] = 0; + } + } + for (int r = 3; r > 0; r--) { + if (board[r][c] == 0) { + board[r][c] = board[r - 1][c]; // Move up number down + board[r - 1][c] = 0; + } + } + } + if (canMove()) addTile(); // Add a number if I can slide +} + +void Game2048::play() { // Play my game + while (true) { + show(); // Show my tiles + char key; // What I press + std::cin >> key; // Get my letter + if (key == 'Q') { // If I press Q + std::cout << "Game Over! Points: " << score << "\n"; // Go to new line + break; // Stop playing + } + if (key == 'A') { // If I press A + moveLeft(); // Slide left + } + if (key == 'D') { // If I press D + moveRight(); // Slide right + } + if (key == 'W') { // If I press W + moveUp(); // Slide up + } + if (key == 'S') { // If I press S + moveDown(); // Slide down + } + if (!canMove()) { // If I can’t slide anymore + show(); // Show last tiles + std::cout << "Game Over! Points: " << score << "\n"; // Go to new line + break; // Stop playing + } + } +} \ No newline at end of file diff --git a/game2048 b/game2048 new file mode 100755 index 0000000000000000000000000000000000000000..0f8b8fbf112e3ac61adfe3a69400f9f15532e98d GIT binary patch literal 21992 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 E0P>n}CIA2c literal 0 HcmV?d00001 diff --git a/game2048.hpp b/game2048.hpp new file mode 100644 index 0000000..e4bb398 --- /dev/null +++ b/game2048.hpp @@ -0,0 +1,21 @@ +#ifndef GAME2048_HPP +#define GAME2048_HPP + +class Game2048 { // My game class +private: + int board[4][4]; // Board for tiles + int score; // My score + +public: + Game2048(); // Start game + void show(); // Show board + void addTile(); // Add new tile + bool canMove(); // Check if I can move + void moveLeft(); // Move left + void moveRight(); // Move right + void moveUp(); // Move up + void moveDown(); // Move down + void play(); // Play game +}; + +#endif \ No newline at end of file diff --git a/game_logic.hpp b/game_logic.hpp new file mode 100644 index 0000000..e69de29 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..73aec54 --- /dev/null +++ b/main.cpp @@ -0,0 +1,7 @@ +#include "game2048.hpp" + +int main() { // Start here + Game2048 game; // Make game + game.play(); // Play it + return 0; // Done +} \ No newline at end of file -- GitLab