Skip to content

Repository files navigation

UnusualChineseChess

UnusualChineseChess Logo
An Unusual Chinese Chess based on Java.

Java Version License Latest Release Pre-Release
Build Status Ask DeepWiki

Preview

Main Interface
The main interface of Unusual Chinese Chess.

Features

  • Extensive Rule Customization: Break free from traditional gameplay with dozens of optional rules. Enable settings like "Piece Stacking," "Pawn Promotion," "Flying Generals," and many more.
  • LAN Multiplayer: Challenge a friend over your local network. The game supports hosting and joining LAN games with real-time synchronization of moves and rule changes.
  • Rule-Based Engine: The game is built on a flexible, rule-based engine that allows for easy addition of new, creative gameplay variations.
  • Save & Load Games: Export your current game state, including all custom rules and board positions, to a JSON file. Import them later to resume your game or share interesting scenarios.
  • Intuitive UI: A clean and straightforward interface that includes a move history panel, a dynamic rule settings panel, and real-time game status updates.
  • Force Move: A unique feature allowing players to suggest and (if agreed upon) execute moves that may not be traditionally valid, adding another layer of strategic depth.
  • Developer-Friendly: Designed with extensibility in mind. Adding new rules is a streamlined process. See How to Create New Rules for a guide.

Getting Started

Quick Launch

I. Jar User

  1. Make sure that you have installed JRE 11 or above. If not, you can download HERE.
  2. Download the latest .jar file from the Releases page.
  3. Double-click the jar file OR use cmd to run the application:
    java -jar UnusualChineseChess.jar

II. Exe User

  1. Download the latest .exe file from the Releases page.
  2. Click to start! All environments are integrated into one exe file!

Build from Source

This project uses Maven multi-module structure. The modules are:

Module Description
ucc-common Common models, constants, SPI interfaces
ucc-core Game engine, rules, move validation
ucc-api Public API (networking, I/O, filters)
ucc-app Application UI layer (Swing GUI, controllers)

Prerequisites

  • JDK 11+ (Oracle or OpenJDK)
  • Maven 3.6+

Build

# Build from the root directory (compiles all modules)
mvn clean package -DskipTests

# The runnable uber-jar is at:
# ucc-app/target/ucc-app.jar

Run the application:

java -jar ucc-app/target/ucc-app.jar

Local Build Script (PowerShell)

For full package generation (jar/zip/exe), run:

.\build-local.ps1

Development Document

This project is designed to be extensible. If you have an idea for a new, unusual rule, it is encouraged for you to contribute!

  • How to Contribute: Please fork the repository, create a new branch for your feature, and submit a pull request.
  • Adding New Rules: I've created a step-by-step guide for developers. Please see How to Create New Rules in 2.X.X for more details. Specifically, if you want to develop on 1.X.X version, please refer to How to Create New Rules in 1.X.X for more details.

For more up-to-date documents, you can refer to Samera2022/UnusualChineseChess | DeepWiki or just click the badge at the top of the article, which offers weekly-updated docs for this project.

Others

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue.

Author

Developer: Samera2022

License

This project is licensed under the GNU General Public License v3.0 License - see the LICENSE file for details.

About

An Unusual Chinese Chess based on Java Swing.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages