{"id":24536202,"url":"https://github.com/duaa-a/multi-gameboard-engine","last_synced_at":"2025-03-16T01:11:31.828Z","repository":{"id":270740216,"uuid":"911318162","full_name":"DuaA-A/Multi-GameBoard-Engine","owner":"DuaA-A","description":"A robust, object-oriented game engine that supports multiple board games","archived":false,"fork":false,"pushed_at":"2025-01-02T19:23:10.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T13:52:49.054Z","etag":null,"topics":["cpp","gameboard","oops-in-cpp","tic-tac-toe","xo"],"latest_commit_sha":null,"homepage":"https://github.com/DuaA-A","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DuaA-A.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-02T18:27:05.000Z","updated_at":"2025-01-02T19:23:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"4aad266d-ac6d-4fa9-a894-ee753c25c369","html_url":"https://github.com/DuaA-A/Multi-GameBoard-Engine","commit_stats":null,"previous_names":["duaa-a/full_integrated_xo_game"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuaA-A%2FMulti-GameBoard-Engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuaA-A%2FMulti-GameBoard-Engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuaA-A%2FMulti-GameBoard-Engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuaA-A%2FMulti-GameBoard-Engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DuaA-A","download_url":"https://codeload.github.com/DuaA-A/Multi-GameBoard-Engine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243809886,"owners_count":20351407,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","gameboard","oops-in-cpp","tic-tac-toe","xo"],"created_at":"2025-01-22T13:52:30.623Z","updated_at":"2025-03-16T01:11:31.816Z","avatar_url":"https://github.com/DuaA-A.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003ch1\u003eMulti-GameBoard-Engine\u003c/h1\u003e\n    \u003cp\u003e\n        A robust, object-oriented game engine that supports multiple board games, including \n        advanced versions of Tic Tac Toe and Four in a Row, with flexible player configurations. \n        This project leverages C++ to deliver a scalable framework for creating and managing board games \n        for two or more players.\n    \u003c/p\u003e\n    \u003ch2\u003eFeatures\u003c/h2\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003cstrong\u003eMulti-Game Support\u003c/strong\u003e: Includes standard Tic Tac Toe, 5x5 Tic Tac Toe, \n            Pyramid Tic Tac Toe, and Four in a Row.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eCustomizable Players\u003c/strong\u003e: Allows different types of players, including \n            human players and AI bots (e.g., RandomPlayer).\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eFlexible Game Rules\u003c/strong\u003e: Configurable game board sizes and winning conditions.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eObject-Oriented Design\u003c/strong\u003e: Modular classes for managing game boards, players, \n            and game logic independently.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eScalable Player Count\u003c/strong\u003e: Supports games with more than two players, adding variety and complexity.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003ch2\u003eProject Structure\u003c/h2\u003e\n    \u003cpre\u003e\nMulti-GameBoard-Engine/\n├── src/\n│   ├── main.cpp               # Entry point of the program\n│   ├── X_O_Board.cpp          # Logic for standard Tic Tac Toe\n│   ├── X_O_5x5_Board.cpp      # Logic for 5x5 Tic Tac Toe\n│   ├── PyramidTicTacToe.cpp   # Logic for Pyramid Tic Tac Toe\n│   ├── FourInARow.cpp         # Logic for Four in a Row\n│   ├── RandomPlayer.cpp       # AI player logic\n│   ├── Player.cpp             # Player interface implementation\n│   ├── GameManager.cpp        # Game management logic\n├── include/\n│   ├── BoardGame_Classes.hpp  # Base classes and interfaces\n│   ├── genericBoardGame.hpp   # Generic board game utilities\n│   ├── GameManager.hpp        # Game management interface\n├── build/\n│   └── ...                    # Compiled binaries\n└── README.html                # Project documentation\n    \u003c/pre\u003e\n    \u003ch2\u003eSupported Games\u003c/h2\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003cstrong\u003eStandard Tic Tac Toe\u003c/strong\u003e: The classic 3x3 board with two players.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003e5x5 Tic Tac Toe\u003c/strong\u003e: A larger version with increased complexity.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003ePyramid Tic Tac Toe\u003c/strong\u003e: A unique twist with a triangular board.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eFour in a Row\u003c/strong\u003e: Connect four pieces in a row to win.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003ch2\u003eCode Explanation\u003c/h2\u003e\n    \u003cp\u003e\n        The engine uses a modular architecture where each game board type, player type, \n        and game manager is implemented in separate classes to ensure extensibility. \n        For example:\n    \u003c/p\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003cstrong\u003eGameManager\u003c/strong\u003e: Manages the game loop, player turns, and win/draw detection.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003eBoard\u003c/strong\u003e: Encapsulates game board states and updates.\u003c/li\u003e\n        \u003cli\u003e\u003cstrong\u003ePlayer\u003c/strong\u003e: Abstracts player behavior, allowing custom implementations like AI.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003ch3\u003eExample Snippet\u003c/h3\u003e\n    \u003cpre\u003e\nvoid GameManager::run() {\n    int x, y;\n    boardPtr-\u003edisplay_board();\n    while (!boardPtr-\u003egame_is_over()) {\n        for (int i = 0; i \u003c player_count; ++i) {\n            players[i]-\u003eget_move(x, y);\n            while (!boardPtr-\u003eupdate_board(x, y, players[i]-\u003eget_symbol())) {\n                players[i]-\u003eget_move(x, y);\n            }\n            boardPtr-\u003edisplay_board();\n            if (boardPtr-\u003eis_winner()) {\n                cout \u003c\u003c players[i]-\u003eto_string() \u003c\u003c \" wins\\n\";\n                return;\n            }\n            if (boardPtr-\u003eis_draw()) {\n                cout \u003c\u003c \"Draw!\\n\";\n                return;\n            }\n        }\n    }\n}\n    \u003c/pre\u003e\n    \u003ch2\u003eGetting Started\u003c/h2\u003e\n    \u003ch3\u003ePrerequisites\u003c/h3\u003e\n    \u003cul\u003e\n        \u003cli\u003eA C++ compiler supporting C++11 or higher.\u003c/li\u003e\n        \u003cli\u003eA text editor or IDE for C++ development.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003ch3\u003eBuilding and Running\u003c/h3\u003e\n    \u003col\u003e\n        \u003cli\u003eClone the repository:\n            \u003cpre\u003egit clone https://github.com/your-username/Multi-GameBoard-Engine.git\u003c/pre\u003e\n        \u003c/li\u003e\n        \u003cli\u003eNavigate to the directory:\n            \u003cpre\u003ecd Multi-GameBoard-Engine\u003c/pre\u003e\n        \u003c/li\u003e\n        \u003cli\u003eCompile the code:\n            \u003cpre\u003eg++ -std=c++11 src/main.cpp -o build/MultiGameEngine\u003c/pre\u003e\n        \u003c/li\u003e\n        \u003cli\u003eRun the game:\n            \u003cpre\u003e./build/MultiGameEngine\u003c/pre\u003e\n        \u003c/li\u003e\n    \u003c/ol\u003e\n    \u003ch2\u003eFuture Enhancements\u003c/h2\u003e\n    \u003cul\u003e\n        \u003cli\u003eAdd more AI strategies for competitive gameplay.\u003c/li\u003e\n        \u003cli\u003eInclude visual enhancements with a GUI.\u003c/li\u003e\n        \u003cli\u003eSupport custom rules for more game variations.\u003c/li\u003e\n    \u003c/ul\u003e\n    \u003ch2\u003eContributing\u003c/h2\u003e\n    \u003cp\u003e\n        Contributions are welcome! Feel free to fork the repository and submit pull requests \n        for new features or bug fixes.\n    \u003c/p\u003e\n    \u003ch2\u003eLicense\u003c/h2\u003e\n    \u003cp\u003e\n        This project is licensed under the MIT License. See the LICENSE file for details.\n    \u003c/p\u003e\n    \u003ch2\u003eAuthors\u003c/h2\u003e\n    \u003cp\u003e\n        \u003cstrong\u003eDuaa AbdelAti\u003c/strong\u003e\u003cbr\u003e\n        \u003cstrong\u003eAbdelRahman Ashraf\u003c/strong\u003e\u003cbr\u003e\n        \u003cstrong\u003eRoaa Sabry\u003c/strong\u003e\u003cbr\u003e\n        Feel free to reach out with questions or suggestions!\n    \u003c/p\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduaa-a%2Fmulti-gameboard-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduaa-a%2Fmulti-gameboard-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduaa-a%2Fmulti-gameboard-engine/lists"}