A fully functional, object-oriented 2D Chess application built in Java with Swing. It provides a complete graphical interface, user authentication, match history, and save-state capabilities.
JChess started as a university project to explore advanced Object-Oriented Programming (OOP) principles and Software Design Patterns. It aims to build a clean, decoupled architecture where the mathematical game logic is completely separated from the visual presentation layer.
- Advanced OOP & Design Patterns: Heavily utilizes the Factory Pattern for dynamic piece generation and the Strategy Pattern for encapsulating the unique movement rules of each piece.
- Custom GUI Navigation: A responsive graphical interface built with Java Swing, using
CardLayoutfor seamless navigation between views . - Data Persistence: User accounts, match histories, and active game states are serialized and stored locally using JSON.
- Language: Java 21
- UI framework: Java Swing (AWT)
- Build tool: Apache Maven
- Data serialization: json-simple
This project uses Maven, making it IDE-agnostic and easy to compile from any terminal.
- Clone the repository:
git clone https://github.com/mihaid11/JChess.git
cd JChess
- Compile the project and fetch dependencies:
mvn clean compile
- Launch the application:
mvn exec:java
For quick testing without registration, you can use the pre-configured guest account:
- Username:
guest - Password:
password

