Chess++ is a robust, interactive chess engine built using C++ and the Raylib graphics library. Designed with Object-Oriented Programming (OOP) principles, it provides a clean and modern local multiplayer experience, bringing the classic game of kings to your desktop with smooth animations and a refined interface.
Chess++ focuses on delivering a reliable and visually engaging chess platform. By leveraging the power of C++ and the simplicity of Raylib, we have implemented a system that handles complex board logic while maintaining a high-performance GUI. Whether you're a casual player or a strategy enthusiast, Chess++ offers a polished environment for local competitive play.
- Comprehensive Rule Engine: Supports almost all official FIDE rules, including standard movement, Check, Checkmate, and Stalemate.
- Special Moves: Full implementation of En Passant and Pawn Promotion (with choice of piece).
- Local Multiplayer: A dedicated pre-game menu allows both players to enter their names for a personalized match experience.
- Strategic Tools: Features a Resign button for early concessions and a real-time display of captured pieces for both sides.
- Dynamic Visuals: Supports Board Rotation for a better perspective and a Fullscreen Mode for immersive play.
- Audio Feedback: Integrated sound effects provide satisfying feedback for every move made on the board.
- Responsive UI: Enhanced interface includes player name displays, game state notifications, and easy navigation menus.
- Language: C++ (Object-Oriented Design)
- Graphics: Raylib
- Build System: Make / Premake5
- Platform: Cross-platform (Windows, Linux, macOS)
- Version Control: Git
- Cloud Platform: GitHub
Meet the developers behind Chess++:
| Name | Role | GitHub |
|---|---|---|
| Shehryar Rafiq | Project Lead, Raylib Setup, Board Logic, UI Systems | @shehryar11w |
| Faizan Basheer | Pawn Logic, En Passant, Check Detection, Audio | @fayzan101 |
| Syed Muhammad Sufyan | Checkmate/Stalemate Logic, Name Input, Captured Pieces | @syedsufyan-coder |
-
Download MinGW-W64 (if not already installed):
- Go to https://github.com/skeeto/w64devkit/releases or use the version that comes with Raylib installer.
-
Build Instructions for MinGW-W64:
- Open Git Bash or Command Prompt.
- Navigate to the project folder:
cd "C:\path\to\Chess-GUI-main"
- Run the following command to build the project:
make
-
Install Dependencies:
- Ensure premake5 is installed from https://premake.github.io/.
-
Build Instructions:
- Open a terminal and navigate to the project folder:
cd "path/to/Chess-GUI-main"
- Run the following commands:
./premake5 gmake2 make
- Open a terminal and navigate to the project folder:
-
Install Dependencies:
- Use Homebrew to install premake5:
brew install premake
- Use Homebrew to install premake5:
-
Build Instructions:
- Open a terminal and navigate to the project folder:
cd "path/to/Chess-GUI-main"
- Run:
./premake5.osx gmake2 make
- Open a terminal and navigate to the project folder:
- Start a New Game: Launch the built executable to start the game.
- Multiplayer: Use the mouse or keyboard for moving pieces.
- Sound Effects: Each move has sound feedback.
- Board Rotation: Rotate the board for a different perspective.
- Captured Pieces: See captured pieces for both players.
- Check/Checkmate: The game detects check, checkmate, and stalemate.
- Castling: Implement the king and rook exchange rule.
- AI Opponent: Add an AI opponent to enable single-player mode.
- Save/Load: Implement save and load functionality to resume games.
- Online Multiplayer: Add support for online multiplayer matches.
We successfully developed a full chess game with all essential features, including:
- Correct chess logic
- Special rules like pawn promotion and en passant
- Checkmate and stalemate detection
- Enhanced user interface, captured pieces display, and sound effects
- Fullscreen mode and board rotation
- Full Chess Rule Implementation
- Smooth Movement and Sound Feedback
- Player Name Input Menu
- Captured Pieces Display
- Checkmate and Stalemate Detection
- Fullscreen Mode and Board Rotation
We'd like to thank our instructors for their support, and Raylib for providing a great platform for game development.