The project's design has been largely changed from here, and is being worked on in a private reposetory. For inqires on the current stage of the project, please contact me at elijahwidener@vt.edu
MoonPoker was an ambitious project aimed at creating an online web app for playing poker in your browser with friends. While the project has since evolved, this repository showcases the legacy codebase as a completed project, demonstrating sophisticated object-oriented design principles and detailed UML modeling.
- Multi-Game Support: Designed to support Stud, Draw, and Community Card Variants of Poker.
- Game-Modifications: Planned support for Hi-Lo variants, bounties, and bomb pots.
- User Profiles: Infrastructure for creating and customizing player profiles.
- Responsive Design: Architected with a focus on both web and mobile optimization.
The legacy codebase of MoonPoker exemplifies a robust object-oriented programming (OOP) approach:
The project includes several detailed UML diagrams that illustrate the system's architecture:
- Class Diagram: Showcases the relationships between key classes in the poker game engine.
- Sequence Diagram: Demonstrates the flow of a typical poker hand.
- Network Diagram: Illustrates how we visioned netorking working.
- Encapsulation: Clear separation of concerns with well-defined class structures.
- Inheritance: Utilization of base classes for common poker elements with specialized subclasses.
- Polymorphism: Flexible design allowing for different poker variants and game rules.
- Abstraction: High-level interfaces for game mechanics, separating implementation details.
The legacy codebase was organized into several key modules:
GameEngine
: Core logic for managing game state and rules.PlayerManagement
: Handling player data, actions, and state.CardDeck
: Implementation of card deck operations.HandEvaluator
: Logic for evaluating and comparing poker hands.UIController
: Abstractions for user interface interactions.
The legacy project was built using:
- Backend: C++
- Build System: CMake
- Testing: Google Test
- Serialization: Google Protobuf
- Documentation: Doxygen
This project serves as a testament to thoughtful software design and architecture in game development.