This repository contains a full-featured Las Vegas-style slot machine game built primarily with C++. The game delivers an authentic casino experience with realistic mechanics, engaging graphics, and immersive sound effects. (In-Progress)
- Authentic Gameplay: True-to-casino random number generation and payout algorithms
- Multiple Reel Configurations: Support for 3, 5, and 7-reel gameplay with configurable pay lines
- Rich Bonus Features: Free spins, multipliers, bonus games, and progressive jackpots
- High-Quality Graphics: Smooth animations and eye-catching visual effects
- Immersive Audio: Dynamic sound effects and background music
- Player Statistics: Comprehensive tracking of play history and win statistics
- Configurable Settings: Customizable bet sizes, autoplay, and game speed
- Core Development: C++17/C++20
- Build System: CMake
- Graphics: SFML (Simple and Fast Multimedia Library)
- Audio: OpenAL
- UI Components: Custom C++ UI system
- Version Control: Git/GitHub
- IDE: CLion
- Testing: Google Test Framework
- CMake 3.15+
- C++17 compatible compiler (GCC 9+, Clang 10+, MSVC 19.20+)
- Git
- CLion IDE (recommended) or any C++ IDE
Installation (The project is still ongoing, so please be patient. A Development roadmap is provided further below.)
-
Clone the repository:
git clone https://https://github.com/AareonJackson/SlotMachineGame.git cd Slot-Machine -
Initialize and update submodules:
git submodule init git submodule update
-
Generate build files with CMake:
mkdir build cd build cmake .. -
Build the project:
cmake --build . --config Release -
Run the executable:
./SlotMachine
- Open CLion
- Select "Open" and navigate to the cloned project directory
- CLion will automatically detect the CMake configuration
- Click the build button or press Shift+F9 to build
- Click the run button or press Shift+F10 to run
slot-machine/
├── CMakeLists.txt # Main CMake configuration
├── assets/ # Game assets
│ ├── audio/ # Sound effects and music
│ ├── config/ # Game configuration files
│ ├── fonts/ # Text fonts
│ └── graphics/ # Images and animations
├── docs/ # Documentation
├── external/ # Third-party libraries
├── src/ # Source code
│ ├── core/ # Core game mechanics
│ │ ├── engine.cpp # Main game engine
│ │ ├── rng.cpp # Random number generator
│ │ └── payout.cpp # Payout calculator
│ ├── ui/ # User interface components
│ ├── audio/ # Audio system
│ ├── config/ # Configuration management
│ └── main.cpp # Application entry point
└── tests/ # Test suite
├── unit/ # Unit tests
└── integration/ # Integration tests
The game can be configured by editing the JSON files in the assets/config/ directory:
game_config.json: General game settingsreels_config.json: Reel strips and symbol configurationspaylines_config.json: Payline definitionspaytable_config.json: Symbol payout valuesfeatures_config.json: Bonus features configuration
Example configuration:
{
"game_name": "Lucky Vegas",
"reel_count": 5,
"row_count": 3,
"payline_count": 20,
"default_bet": 1.00,
"min_bet": 0.20,
"max_bet": 100.00,
"rtp_percentage": 96.5
}- Project setup and architecture design
- Core game mechanics
- Basic UI implementation
- Reel animations and graphics
- Sound effects and music integration
- Bonus features implementation
- Statistics and history tracking
- Advanced visual effects
- Performance optimization
- Comprehensive testing
- Release build and deployment
- Inspired by classic Las Vegas slot machines
- Thanks to the SFML and OpenAL communities for their excellent libraries
- Special thanks to all contributors and testers
Note: This game is intended for entertainment purposes only and does not involve real gambling or money.